[SQL ]撈兩個資料表 其中一個表很大的撈法

作者: dspswen (阿天)   2014-04-02 15:34:29
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
資料庫名稱: MYSQL
資料庫版本:5.1
內容/問題描述:
我有兩個 TABLE
A 撈出來可能是比較小的資料,但是其中 A 的欄位中有個會員 ID
那我又需要列出的資料表中含有會員的幾項詳細資料(會員數百萬筆)
會員的詳細資料是在 B 資料表,如果下了 JOIN 會掛掉 ... (查詢數量變A*B的感覺)
請問這樣的情形該怎麼下才比較好呢
感謝
作者: misssomeone (風舞月光)   2014-04-02 16:40:00
你是用哪種JOIN?
作者: bohei (run and fall)   2014-04-02 18:10:00
查詢的次數是多次還是只會有一次查詢?如果有多次,可以先用一個TEMP把會用到的會員資料暫存起來之後就只需要對這TEMP做JOIN即可
作者: ImOnLine (So be it)   2014-04-02 22:06:00
請問樓上temp怎麼下呢?還是要create new table呢?
作者: dspswen (阿天)   2014-04-02 22:57:00
了解,我各種 JOIN 都有試看看,但是都跑不動
作者: bohei (run and fall)   2014-04-03 12:17:00
我是使用Oracle,語法不盡相同,但我剛剛google mysql + temp找得到教學的文章~ 剩下的就靠自己吧XD對了..這兩個資料表有建Index嗎?數百萬筆雖然很多,但也沒那麼多... 如有正確Join且利用Index應該不至於掛掉勒..
作者: popcorny (畢業了..@@")   2014-04-03 13:32:00
join B的欄位要有建立index,有建應該會很快
作者: rockchangnew (rock)   2014-04-03 13:33:00
資料庫沒那麼爛,鐵定是沒正確的index
作者: bbcust (bbcust)   2014-04-03 13:54:00
應該是index問題 以前也有做過好幾個百萬筆一起join單純select也沒幾秒不過是MSSQL 當時影響效能的主要還是index
作者: jinmin88 (晝伏夜出)   2014-04-07 07:00:00
該不會到cross join了吧?
作者: knightnick (liang)   2014-04-11 20:14:00
分兩次撈 先取會員ID,再去另一個表拿資料

Links booklink

Contact Us: admin [ a t ] ucptt.com