假设我有一个T-SQL语句:T-SQL不等于运营商VS Case语句
select * from MyTable
where Code != 'RandomCode'
我一直在负责制作这种WHERE语句更快速地执行。联机丛书表示,正面查询(=)比负面(= =,<>)更快。
因此,一种选择是将其变为CASE语句,例如,
select * from MyTable
where
case when Code = 'RandomCode' then 0
else 1 end = 1
有谁知道这是否可以预期会比原来的T-SQL更快或更慢?
在此先感谢。
我没有看到!=会比=慢,除了解析器中有额外的额外开销字符。最后,在cpu级别,这是一个单一的'cmp'类型的指令,之后有'jmp/je/jne'跳转。如果这1个字节对你的代码产生了巨大的影响,那么无论你在做什么都远远高于本网站的水平。 – 2012-08-07 04:19:20
使用查询计划分析器来检查或分析器。 – 2012-08-07 04:20:24
我非常赞同上述两种观点。也就是说,'CASE'选项看起来过于复杂。有条件的地方应该避免使用条款,因为它们可能会使查询计划分裂(不是在这种情况下 - 不是双关语意图)。 – 2012-08-07 04:24:29