作者omnl ()
看板Database
標題[SQL ] INNER/LEFT JOIN效能比較問題
時間Mon May 14 21:21:34 2012
公司用的DB是Oracle
根據以前的記憶(及google的結果) inner join應該效率要比 left join來的好
但進目前公司後常遇到一種情況
針對SQL條件中的某個table
用left join的速度會比inner join快上非常多(可能是上百倍以上)
(從toad去看execution plan 整個plan只有針對哪張表為inner/outer join的差別)
目前會想到的線索可能有兩個
第一個 join 欄位的值是可能出現null (所以才會想用inner join把它去掉)
第二個 join的欄位沒有index
table的資料量約上百萬筆
我試著用null/index/left/inner 去google找答案
一直找不到相關的info
不知道有沒有前輩 能從前面哪些稀薄的線索幫我找出病徵來 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.171.46.156
→ chunhsiang:能給具體一點的例子嗎 = =" 2邊TABLE的筆數差不多? 05/14 21:44
→ chunhsiang:另外你的意思是說兩邊都可能有NULL 且都沒建立INDEX? 05/14 21:45
→ omnl:兩邊TABLE的筆數會有差 可能是幾萬筆對上百萬筆 05/14 22:10
→ omnl:兩邊的確都有null 且都沒有建立index =.=||| 05/14 22:11
→ chunhsiang:我記得不是有查詢計畫可以看 05/15 09:54
→ chunhsiang:另外他們用的實際join方式是什麼 05/15 09:55
→ chunhsiang:我好像有聽過大小TABLE JOIN有差 05/15 09:56
推 fantasyj:第三方的軟體看的explan不準,請用標準sql plus的.. 05/16 07:21
→ fantasyj:另null join null會造成迪卡爾乘積,依情況判斷一下吧 05/16 07:24