Eri*_*rik 6 performance sql-server-2008 sql-server stored-procedures t-sql query-performance
我正在查看另一个人编写的存储过程,并且每个WHEN
子句都使用IN
语句而不是=
. 我的直觉告诉我这没有那么快、效率高等等。
例如:
CASE WHEN a.Indicator in ('Yes') then 'something'
WHEN a.STATUS in (0) then 'something 0'
WHEN a.STATUS in (1) then 'something 1'
WHEN a.STATUS in (2) then 'something 2'
WHEN a.STATUS in (3,4,5,6,7,8) then 'something big'
END
Run Code Online (Sandbox Code Playgroud)
使用IN
而不是更快=
吗?
Aar*_*and 11
以下构造:
c IN (x, y, z)
Run Code Online (Sandbox Code Playgroud)
推断为:
c = x OR c = y OR c = z
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,它会c IN (x)
推断为c = x
。因此,第一条评论是绝对正确的:除非在非常极端的情况下(查询文本的大小实际上受到选择的影响),否则您不会看到性能差异,但即使在那里也很难理解性能差异值得一提。