是" on"标准比"更快"?

时间:2016-08-06 13:55:25

标签: sql-server performance join where-clause on-clause

我们假设我们在t1t2之间加入了一个联接,如下所示:

select c1, ..., cn
from t1 join t2
on t1.fk = t2.k
join t3
on t2.fk = t3.k
where (some condition independent from t3)

(some condition independent from t3)可能是什么。现在,请考虑以下问题:

select c1, ..., cn
from t1 join t2
on t1.fk = t2.k and (some condition independent from t3)
join t3
on t2.fk = t3.k

让我们假设t1 x t2 x t3以及join条件导致count1行,而如果我们按where条件过滤同样,我们将有count2条记录,其中count2< = count1。

我想知道是对所有count1行执行where条件,还是只对count2行的子集执行?在性能方面是否更好地将条件尽快纳入开启条件而不是在查询结束时附加它们?

1 个答案:

答案 0 :(得分:0)

没有区别。看看实际的执行计划。你会发现他们是平等的。

在SQL Server Management Studio中:查询 - >包括实际执行计划