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,效率极差。
内连接效率则稳定。 在不很清楚实际数据分布情况下,最好用内连接。
.
[华 软 网]
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,效率极差。
内连接效率则稳定。 在不很清楚实际数据分布情况下,最好用内连接。
.
[华 软 网]
相关文章推荐
- Mysql之exists和inner join效率问题(2)
- Mysql之exists和inner join效率问题(1)
- IN、EXISTS和LEFT JOIN,NOT IN、NOT EXISTS和INNER JOIN在存在与不存在的查询效率
- IN、EXISTS和LEFT JOIN,NOT IN、NOT EXISTS和INNER JOIN在存在与不存在的查询效率
- sql中in和exists的区别效率问题
- Sql中EXISTS与IN的效率问题
- 请教sql执行效率问题(inner join 和 where)
- sql中in和exists的区别效率问题 转
- SqlServer点滴:in和exists的效率问题
- oracle中的 exists 和 in 的效率问题
- SQL中in和exists的区别和执行效率问题解析
- 分析in和exists的区别与执行效率的问题
- sql中in和exists的区别效率问题
- in 和 exists效率问题
- sql中in和exists的区别效率问题
- PHP isset, array_key_exists配合使用, 并解决效率问题
- in和exists的区别与执行效率问题
- oracle中的exists 和not exists 用法 in与exists语句的效率问题
- SQL中EXISTS与IN的效率问题
- sql中in和exists的区别效率问题(转)