SQL EXISTS производительность - PullRequest
       18

SQL EXISTS производительность

2 голосов
/ 19 января 2011

Я понимаю, что SQL EXISTS проверяет наличие строк, однако оценивает ли оно все выражение? Так, например, было бы что-то вроде этого:

IF EXISTS (SELECT TOP 1 1 FROM table WITH (NOLOCK))
BEGIN
    ... 
END

Быть быстрее, чем что-то вроде этого:

IF EXISTS (SELECT 1 FROM table WITH (NOLOCK))
BEGIN
    ...
END

Ответы [ 4 ]

4 голосов
/ 19 января 2011

Exists остановится после первого обращения, потому что тогда выражение оценивается как true, поэтому верхняя (1) -часть не нужна.

3 голосов
/ 19 января 2011

Оба должны работать точно так же. SQL Server учитывает, что EXISTS является короткозамкнутой операцией и не оценивает возвращаемый результат, просто проверяет, есть ли IS возвращаемый результат!

2 голосов
/ 19 января 2011

Операторы генерируют идентичные планы запросов, поэтому нет никакой разницы. Второй пример, на мой взгляд, легче читать.

2 голосов
/ 19 января 2011

Нет, не будет.

SQL Server использует TOP в плане для оценки EXISTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...