检查数据是否存在的查询
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
在“人员”表中,“ PName”列是非聚集的唯一索引
答案 0 :(得分:3)
使用if exists
。可以在第一匹配行(如果有)处停止。聚合查询需要执行实际计数。
我会注意到,如果您在persons(name)
上有一个索引,那么在这种情况下,差别很小。索引可用于两个查询。不过,我建议您使用exists
,因为它可以更好地捕获您的意图,并且应该具有更好的性能。
答案 1 :(得分:0)
存在更好。存在将在匹配的第一行停止,计数将查询所有匹配条件的行并进行比较