理论上,为什么内连接的工作速度明显快于外连接,因为两个查询都返回相同的结果集。我有一个需要很长时间来描述的查询,但这就是我看到的改变单连接:左外连接 - 6秒,内连接 - 0秒(查询的其余部分是相同的)。结果集:相同
答案 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子句过滤掉。但这只是一个疯狂的猜测。要知道你需要查看执行计划。