use*_*188 5 sql performance sql-server-2008-r2
我正在使用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'
Run Code Online (Sandbox Code Playgroud)
他们在结果/副作用/表现上有任何差异(无论多小)?
谢谢
绝对没有区别 - IF EXISTS(...)只会根据WHERE语句中的子句检查行是否存在.
在声明中一切是无关紧要的-不管你使用没有任何区别SELECT *或SELECT 1或或SELECT TOP 1 *.即使使用SELECT * ....也不要选择表中的所有列-它只是再次检查基础上,在数据的存在WHERE条款.
所有五个查询都具有完全相同的执行计划
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |