作者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
1F:→ chunhsiang:能给具体一点的例子吗 = =" 2边TABLE的笔数差不多? 05/14 21:44
2F:→ chunhsiang:另外你的意思是说两边都可能有NULL 且都没建立INDEX? 05/14 21:45
3F:→ omnl:两边TABLE的笔数会有差 可能是几万笔对上百万笔 05/14 22:10
4F:→ omnl:两边的确都有null 且都没有建立index =.=||| 05/14 22:11
5F:→ chunhsiang:我记得不是有查询计画可以看 05/15 09:54
6F:→ chunhsiang:另外他们用的实际join方式是什麽 05/15 09:55
7F:→ chunhsiang:我好像有听过大小TABLE JOIN有差 05/15 09:56
8F:推 fantasyj:第三方的软体看的explan不准,请用标准sql plus的.. 05/16 07:21
9F:→ fantasyj:另null join null会造成迪卡尔乘积,依情况判断一下吧 05/16 07:24