Является ли критерий "быстрее" быстрее, чем "где"?
Давайте предположим, что у нас есть соединение между t1
а также t2
, как это:
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
Икс t2
Икс t3
вместе с join
условия приводят к числу строк1, а если мы отфильтруем по where
условие, тогда у нас будет запись count2, где count2 <= count1.
Интересно, where
выполняется условие для всех строк count1 или только для подмножества строк count2? Лучше ли с точки зрения производительности включать условия в условия как можно скорее, а не добавлять их в конце запроса?
1 ответ
Это не имеет значения. Посмотрите на реальные планы выполнения. Вы увидите, что они равны.
В SQL Server Management Studio: запрос -> включить фактический план выполнения