Вопрос

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

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

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

IF EXISTS (SELECT 1 FROM table WITH (NOLOCK))
BEGIN
    ...
END
Это было полезно?

Решение

Оба они должны работать точно так же. SQL Server учитывает, что EXISTS является короткой операцией и не оценивает результат возврата, просто проверьте, чтобы увидеть, есть ли там ЯВЛЯЕТСЯ результат возврата!

Другие советы

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

Нет, это не так.

SQL Server Использование TOP В плане оценить EXISTS.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top