检查数据是否存在的查询
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列是非聚簇唯一索引
使用if exists
。这可以在第一个匹配行(如果有)停止。聚合查询需要执行实际计数。
我会注意到,如果你有persons(name)
的索引,那么差异很小 - 在这种情况下。索引可用于两个查询。不过,我建议你使用exists
,因为它更好地捕捉你想要的东西,它应该有更好的性能。
存在更好。存在将停在第一个匹配的行,Count将查询所有匹配条件的行并进行比较