作者:
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:00join B的欄位要有建立index,有建應該會很快
作者:
bbcust (bbcust)
2014-04-03 13:54:00應該是index問題 以前也有做過好幾個百萬筆一起join單純select也沒幾秒不過是MSSQL 當時影響效能的主要還是index