我们在查询中使用连接的顺序会影响它的执行时间吗?
问问题
1054 次
4 回答
4
不,不是的。
SQL Server
的优化器会选择最好的(在它看来)方式,而不管连接顺序如何。
SQL Server
支持特殊提示 ,FORCE ORDER
它使表按照它们列出的顺序在连接中引导。
这些查询:
SELECT *
FROM t_a
JOIN t_b
ON a = b
OPTION (FORCE ORDER)
和
SELECT *
FROM t_b
JOIN t_a
ON a = b
OPTION (FORCE ORDER)
将产生与OPTION (FORCE ORDER)
省略的相同的计划和添加的不同的计划。
但是,只有当您完全确定自己知道自己在做什么时,才应该使用此提示。
于 2010-02-16T18:30:17.887 回答
0
优化器通常会比较所有连接顺序并尝试选择最佳顺序,而不管您编写查询的顺序如何,但是在一些复杂的查询中,要考虑的选项太多了,请注意,可能的连接顺序的数量会增加到加入的表数。在这种情况下,优化器不会考虑所有选项,但肯定会考虑您在查询中编写连接的顺序,因此可能会影响执行计划和执行时间。
于 2010-02-16T19:36:22.383 回答
0
对于外连接,表的顺序会改变查询的含义,并且很可能会改变执行计划。
于 2010-02-16T20:09:17.313 回答