2

我们在查询中使用连接的顺序会影响它的执行时间吗?

4

4 回答 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 回答
1

是的,它确实。在查询执行计划中可以看到它的效果。参考这个这个。另一个链接在这里

于 2010-02-16T18:29:54.380 回答
0

优化器通常会比较所有连接顺序并尝试选择最佳顺序,而不管您编写查询的顺序如何,但是在一些复杂的查询中,要考虑的选项太多了,请注意,可能的连接顺序的数量会增加到加入的表数。在这种情况下,优化器不会考虑所有选项,但肯定会考虑您在查询中编写连接的顺序,因此可能会影响执行计划和执行时间。

于 2010-02-16T19:36:22.383 回答
0

对于外连接,表的顺序会改变查询的含义,并且很可能会改变执行计划。

于 2010-02-16T20:09:17.313 回答