sql - SQL Server 中的 IF Exists (Query) vs IF(ResultCount > 0) 哪个查询执行得更好
问题描述
检查数据是否存在的查询
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
,因为它可以更好地捕捉您的意图并且它应该具有更好的性能。
推荐阅读
- javascript - 从多个数组中获取唯一值
- python - 如何解决 TensorFlow 错误“从检查点恢复失败”。
- git - 在 shell 中,有没有办法创建一个 if 语句来查找除任何内容之外的任何内容,以及如何解析参数?
- javascript - 等效于 Node.js 中的控制台输入?
- laravel-5 - 如何从关系 laravel 中获取数据?
- c++ - g ++中的const中的存储分配
- c++ - 如何仅将 QCombobox 的一项更改为可由用户编辑
- c++ - GMock StrictMock 无趣的函数调用不会通过测试
- substrate - 在 ink 中调用 HashMap/BTreeMap insert() 时外部失败!通过 Polkadot JS api 签订合同
- python - 如何设计和自定义 tkinter/guizero 菜单栏?