我是T-SQL的新手。据我所知,SELECT *被认为是一种不好的做法,所以我总是避免在我的代码中使用SELECT *。
然而,我的同事告诉我,使用SELECT *可以进行存在检查。例如,
IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
--do something
END
“因为MSSQL Server知道该语句正在进行存在检查,所以优化器会做正确的事情。”他说。
当我使用SELECT *进行存在检查时,是否没有性能开销?
提前致谢。
答案 0 :(得分:8)
你的同事是正确的 1 。优化器知道实际上不需要检索列数据。
但你也是正确的,一般,SELECT *
应该避免。 EXISTS
检查是证明规则的例外。
1 根据我的经验,有点罕见。