Является ли критерий "быстрее" быстрее, чем "где"?

Давайте предположим, что у нас есть соединение между 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: запрос -> включить фактический план выполнения

Другие вопросы по тегам