Какой запрос выполняется лучше, если IF Exists (Query) против IF (ResultCount> 0) в SQL Server - PullRequest
0 голосов
/ 23 февраля 2019

Запрос, который проверяет наличие данных

    IF EXISTS (SELECT * 
    FROM Persons 
    WHERE PName = 'John')
    BEGIN 
        PRINT 'YES'
    END

Запрос, который возвращает счетчик результатов и затем сравнивает: -

    IF((SELECT Count(*) 
    FROM Persons 
    WHERE PName = 'John') > 0)
    BEGIN
        PRINT 'YES'
    END 

В таблице Personame столбец PName является некластеризованным уникальныминдекс

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

лучше существует.Exists остановится на первой совпадающей строке, Count запросит все совпадения строк, где условие, и сравнит

0 голосов
/ 23 февраля 2019

Используйте if exists.Это может остановиться на первой соответствующей строке (если есть).Запрос агрегации должен выполнить фактическое число.

Я отмечу, что если у вас есть индекс на persons(name), тогда разница незначительна - в этом случае.Индекс может использоваться для обоих запросов.Тем не менее, я советую вам использовать exists, потому что он лучше отражает ваши намерения и должен иметь лучшую производительность.

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