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

时间:2013-09-16 07:02:40

标签: sql sql-server tsql

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

然而,我的同事告诉我,使用SELECT *可以进行存在检查。例如,

IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
    --do something
END

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

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

提前致谢。

1 个答案:

答案 0 :(得分:8)

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

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

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