Подтвердить что ты не робот

IF EXISTS в T-SQL

Если у нас есть оператор SELECT внутри IF EXISTS, выполняется ли его выполнение, как только он найдет запись в таблице? Например:

IF EXISTS(SELECT *  FROM  table1  WHERE Name='John' )

return 1

else

return 0

Если строка существует в таблице с именем = John, она останавливает выполнение и возвращает 1 или проходит через всю таблицу, ища больше совпадений?

4b9b3361

Ответ 1

Да, он прекращает выполнение, поэтому всегда рекомендуется COUNT > 0, который часто не будет.

Если вы посмотрите на план выполнения, вы увидите, что фактическое количество строк, выходящих из table1, будет не более 1 независимо от количества совпадающих записей.

См. эту статью для обсуждения с EXISTS против COUNT

Если вы комбинируете EXISTS() AND EXISTS() запросы, но не можете полагаться на короткое замыкание. то есть, если первый запрос является ложным, и, следовательно, все выражение ложно, второй запрос все равно выполняется.

Ответ 2

В этом случае нет необходимости в "else":

IF EXISTS(SELECT *  FROM  table1  WHERE Name='John' ) return 1
return 0