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

看板Database作者 (阿天)時間11年前 (2014/04/02 15:34), 編輯推噓6(6012)
留言18則, 9人參與, 最新討論串1/1
(針對 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://www.ptt.cc/bbs/Database/M.1396424072.A.C5F.html

04/02 16:40, , 1F
你是用哪種JOIN?
04/02 16:40, 1F

04/02 18:10, , 2F
查詢的次數是多次還是只會有一次查詢?
04/02 18:10, 2F

04/02 18:10, , 3F
如果有多次,可以先用一個TEMP把會用到的會員資料暫存起來
04/02 18:10, 3F

04/02 18:10, , 4F
之後就只需要對這TEMP做JOIN即可
04/02 18:10, 4F

04/02 22:06, , 5F
請問樓上temp怎麼下呢?還是要create new table呢?
04/02 22:06, 5F

04/02 22:57, , 6F
了解,我各種 JOIN 都有試看看,但是都跑不動
04/02 22:57, 6F

04/03 12:17, , 7F
我是使用Oracle,語法不盡相同,但我剛剛google mysql + temp
04/03 12:17, 7F

04/03 12:18, , 8F
找得到教學的文章~ 剩下的就靠自己吧XD
04/03 12:18, 8F

04/03 12:19, , 9F
對了..這兩個資料表有建Index嗎?
04/03 12:19, 9F

04/03 12:20, , 10F
數百萬筆雖然很多,但也沒那麼多... 如有正確Join且利用Index
04/03 12:20, 10F

04/03 12:20, , 11F
應該不至於掛掉勒..
04/03 12:20, 11F

04/03 13:32, , 12F
join B的欄位要有建立index,有建應該會很快
04/03 13:32, 12F

04/03 13:33, , 13F
資料庫沒那麼爛,鐵定是沒正確的index
04/03 13:33, 13F

04/03 13:54, , 14F
應該是index問題 以前也有做過好幾個百萬筆一起join
04/03 13:54, 14F

04/03 13:55, , 15F
單純select也沒幾秒
04/03 13:55, 15F

04/03 13:55, , 16F
不過是MSSQL 當時影響效能的主要還是index
04/03 13:55, 16F

04/07 07:00, , 17F
該不會到cross join了吧?
04/07 07:00, 17F

04/11 20:14, , 18F
分兩次撈 先取會員ID,再去另一個表拿資料
04/11 20:14, 18F
文章代碼(AID): #1JExs8nV (Database)