哪个查询在SQL Server中执行的IF存在(查询)与IF(ResultCount> 0)相比更好

问题描述 投票:0回答:2

检查数据是否存在的查询

    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 

在Persons表中,PName列是非聚簇唯一索引

sql sql-server database
2个回答
3
投票

使用if exists。这可以在第一个匹配行(如果有)停止。聚合查询需要执行实际计数。

我会注意到,如果你有persons(name)的索引,那么差异很小 - 在这种情况下。索引可用于两个查询。不过,我建议你使用exists,因为它更好地捕捉你想要的东西,它应该有更好的性能。


0
投票

存在更好。存在将停在第一个匹配的行,Count将查询所有匹配条件的行并进行比较

© www.soinside.com 2019 - 2024. All rights reserved.