外连接性能

时间:2010-08-12 14:07:25

标签: sql performance

为什么外连接通常比内连接慢?我的意思是,独立于数据库供应商。我想这是实施或使用的访问计划的问题,但我无法说服我的同事认为性能应该是相同的。

提前致谢 圣路易斯

6 个答案:

答案 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个结果集