作者dspswen (阿天)
看板Database
標題[MYSQL]撈兩個資料表 其中一個很大的撈法
時間Wed Apr 2 15:34:29 2014
(針對
SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
資料庫名稱: MYSQL
資料庫版本:5.1
內容/問題描述:
我有兩個 TABLE
A 撈出來可能是比較小的資料,但是其中 A 的欄位中有個會員 ID
那我又需要列出的資料表中含有會員的幾項詳細資料(會員數百萬筆)
會員的詳細資料是在 B 資料表,如果下了 JOIN 會掛掉 ... (查詢數量變A*B的感覺)
請問這樣的情形該怎麼下才比較好呢
感謝
--
(′▽‵ ) _____________
かんーまおーよんすっすー
/ 丶 ヽ
U CHU BIEN CAPSULE | (よんすっすー)
/ ヽ / /
__ 斯斯鼻炎膠嚢 ___ | くぉーそーよんすっすー
/ /へ ヘ/ /
スズレックス鼻炎カプセルA | (よんすっすー)
(_/| \_ノ/
θ | びーさいびーえーんよんすっすー
/ /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Mr.よんすっすー
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.116.102
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Database/M.1396424072.A.C5F.html
1F:推 misssomeone:你是用哪種JOIN? 04/02 16:40
2F:推 bohei:查詢的次數是多次還是只會有一次查詢? 04/02 18:10
3F:→ bohei:如果有多次,可以先用一個TEMP把會用到的會員資料暫存起來 04/02 18:10
4F:→ bohei:之後就只需要對這TEMP做JOIN即可 04/02 18:10
5F:推 ImOnLine:請問樓上temp怎麼下呢?還是要create new table呢? 04/02 22:06
6F:→ dspswen:了解,我各種 JOIN 都有試看看,但是都跑不動 04/02 22:57
7F:推 bohei:我是使用Oracle,語法不盡相同,但我剛剛google mysql + temp 04/03 12:17
8F:→ bohei:找得到教學的文章~ 剩下的就靠自己吧XD 04/03 12:18
9F:→ bohei:對了..這兩個資料表有建Index嗎? 04/03 12:19
10F:→ bohei:數百萬筆雖然很多,但也沒那麼多... 如有正確Join且利用Index 04/03 12:20
11F:→ bohei:應該不至於掛掉勒.. 04/03 12:20
12F:推 popcorny:join B的欄位要有建立index,有建應該會很快 04/03 13:32
13F:推 rockchangnew:資料庫沒那麼爛,鐵定是沒正確的index 04/03 13:33
14F:→ bbcust:應該是index問題 以前也有做過好幾個百萬筆一起join 04/03 13:54
15F:→ bbcust:單純select也沒幾秒 04/03 13:55
16F:→ bbcust:不過是MSSQL 當時影響效能的主要還是index 04/03 13:55
17F:→ jinmin88:該不會到cross join了吧? 04/07 07:00
18F:→ knightnick:分兩次撈 先取會員ID,再去另一個表拿資料 04/11 20:14