您的位置:首页 > 其它

exists与inner join的效率问题

2009-05-27 16:08 162 查看
二者并没有严格的效率高低之分,甚至依赖于数据库中数据的组织方式。

exists的效率依赖于匹配度,
join的效率则比较稳定。比如,对 select * from tableA as ta where exists (select 1
from tableB as tb where ta.id = tb.id); 每扫描ta一行,就会扫描tb,遇到匹配就返回true,没遇到匹配就会把tb一直扫描下去。

举个极端, tb中每行的id都与ta中每行id相同

即 ta

id

1

1

1

1

1

,,,

tb

id

1

1

1

1

1

1

一扫就有返回,效率极高

反之

ta

id

1

1

1

1

1

1

1

...

tb

id

0

0

0

0

0

0

..

每扫ta一行,都要扫完tb,效率极差。

内连接效率则稳定。 在不很清楚实际数据分布情况下,最好用内连接。

.

[华 软 网]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: