不同写作方式存在差异?

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)

他们在结果/副作用/表现上有任何差异(无论多小)?

谢谢

mar*_*c_s 6

绝对没有区别 - IF EXISTS(...)只会根据WHERE语句中的子句检查行是否存在.

在声明中一切是无关紧要的-不管你使用没有任何区别SELECT *SELECT 1或或SELECT TOP 1 *.即使使用SELECT * ....不要选择表中的所有列-它只是再次检查基础上,在数据的存在WHERE条款.

所有五个查询都具有完全相同的执行计划