【发布时间】:2011-03-28 23:13:18
【问题描述】:
为什么外连接通常比内连接慢?我的意思是,独立于数据库供应商。我想这是实施或使用的访问计划的问题,但我无法说服我的一位认为性能应该相同的同事。
提前致谢 刘易斯
【问题讨论】:
标签: sql performance
为什么外连接通常比内连接慢?我的意思是,独立于数据库供应商。我想这是实施或使用的访问计划的问题,但我无法说服我的一位认为性能应该相同的同事。
提前致谢 刘易斯
【问题讨论】:
标签: sql performance
外部联接通常会给你更多的结果(A*B 而不是WHERE A=B)。这需要更多时间。
【讨论】:
FULL OUTER JOIN,该怎么办?
CROSS JOIN 的输出。如果您的加入条件是1 = 1,它将成为一个叉积,但INNER JOIN 也是如此。
一般来说,这是因为数据库引擎必须执行更多的比较操作来缩小结果集。
【讨论】:
inner join 将消除行,而 outer join 则不会。这会导致需要处理更多的行。
看看this article,它直观地描述了连接。请注意inner join 与左侧和完整outer join 相比,结果集小了多少。这些图片并不代表所有场景,但它们可以让您了解正在发生的事情。
【讨论】:
使用真实数据进行测试。 可能除非外连接引入额外的行,否则性能是相同的。
【讨论】:
我的网站出现性能问题,发现查询需要 7 秒才能完成。
此查询中的所有列都是数字并已编入索引(SQL Server 2008 R2)。
这个完全外连接包括 3 个表,每个表有 150、350 和 27 万条记录。
我只是将 FULL OUTER JOIN 替换为 LEFT JOIN,执行时间减少到 0 秒(毫秒)。
在实现完全外连接之前,我只用几条记录对其进行了测试。但是,我了解到,如果表有数千或数百万条记录,则完全外连接的性能不会很好。
【讨论】:
有时,左连接比内连接执行得更快。这将取决于应该加入的 2 个结果集
【讨论】: