是否可以使用SELECT*在T-SQL中进行存在检查

Ken*_*Lee 1 sql t-sql sql-server

我是T-SQL的新手.据我所知,SELECT*被认为是一种不好的做法,所以我总是避免在我的代码中使用SELECT*.

但是,我的同事告诉我,使用SELECT*可以进行存在检查.例如,

IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
    --do something
END
Run Code Online (Sandbox Code Playgroud)

"因为MSSQL Server知道该语句正在进行存在检查,所以优化器会做正确的事情." 他说.

当我使用SELECT*进行存在检查时,是否没有性能开销?

提前致谢.

Dam*_*ver 8

你的同事是对的1.优化器知道实际上不需要检索列数据.

但你也是正确的,一般来说,SELECT *应该避免.EXISTS检查是证明规则的例外.

1根据我的经验,有点罕见.