我正在使用 SQL Server 2008 R2
我只想测试表中是否存在某些东西
IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
它们在结果/副作用/性能(无论多么微小)上是否有任何差异?
谢谢
最佳答案
绝对没有区别 - IF EXISTS(...)
将只检查基于 WHERE
的行是否存在你的陈述中的条款。
声明中的其他所有内容都无关紧要 - 是否使用 SELECT *
没有任何区别或 SELECT 1
或 或 SELECT TOP 1 *
.即使使用 SELECT * ....
不是 从表中选择所有列 - 它再次仅根据 WHERE
检查数据是否存在条款。
所有五个查询都有 正好相同的执行计划
关于sql - IF Exists 不同写法之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812288/