为什么外连接通常比内连接慢?我的意思是,独立于数据库供应商。我想这是实施或使用的访问计划的问题,但我无法说服我的同事认为性能应该是相同的。
提前致谢 圣路易斯
答案 0 :(得分:6)
inner join
将消除行,而outer join
则不会。这导致需要处理更多行。
查看可视化描述连接的this article。请注意inner join
与左侧和完整outer join
的结果集相差多少。这些图片并不代表所有场景,但它们可以让您了解正在发生的事情。
答案 1 :(得分:2)
我的网站性能有问题,发现查询需要7秒才能完成
此查询中的所有列都是数字并已编制索引(SQL Server 2008 R2)
这个完整的外部连接位于3个表之间,每个表(150,350和270)千行。
我只是替换了LEFT JOIN的FULL OUTER JOIN,执行时间减少到0秒(毫秒)
在我用几行测试之前 然后,如果表有数千或数百万条记录,则完整外连接的性能将不会很好。
答案 2 :(得分:1)
外部联接通常会为您提供更多结果(A*B
而不是WHERE A=B
)。这需要更多时间。
答案 3 :(得分:1)
通常,这是因为db引擎必须执行更多的比较操作来缩小结果集范围。
答案 4 :(得分:1)
用真实数据测试它。 除非外连接引入额外的行,否则性能可能相同。
答案 5 :(得分:1)
有些时候,连接执行速度比内部连接快。这取决于应该加入的2个结果集