SQL Server速度:左外连接vs内连接

时间:2012-04-16 14:23:28

标签: sql-server performance

理论上,为什么内连接的工作速度明显快于外连接,因为两个查询都返回相同的结果集。我有一个需要很长时间来描述的查询,但这就是我看到的改变单连接:左外连接 - 6秒,内连接 - 0秒(查询的其余部分是相同的)。结果集:相同

2 个答案:

答案 0 :(得分:1)

实际上,根据数据,左外连接和内连接不会返回相同的结果。很可能左外连接将有更多的结果,并再次取决于数据..

答案 1 :(得分:0)

如果我将左连接更改为内连接并且结果没有不同,我会担心。我怀疑你在where子句中的表左侧有一个条件有效(并且可能不正确)将其转换为内连接。

类似的东西:

select * 
from table1 t1
left join table2 t2 on t1.myid = t2.myid
where t2.somefield = 'something'

不同
select * 
from table1 t1
left join table2 t2 
on t1.myid = t2.myid and t2.somefield = 'something'

所以第一次我会担心我的查询开头是不正确的,然后我会担心性能问题。内连接 NOT 左连接的性能增强,它们意味着两个不同的东西,并且应该返回不同的结果,除非你有一个表格,每个记录总是匹配。在这种情况下,您将更改为内部联接,因为另一个不正确,不会提高性能。

我最好猜测左连接需要更长时间的原因是它连接了更多的行,然后由where子句过滤掉。但这只是一个疯狂的猜测。要知道你需要查看执行计划。