Sql-Server

在更快的 CASE 語句中:“WHENF我___F一世和一世dfield在 (0)’ 或 ‘WHENF我___F一世和一世dfield= 0”?

  • May 5, 2019

我正在查看另一個人編寫的儲存過程,並且每個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

使用IN而不是更快=

以下構造:

c IN (x, y, z)

外推為:

c = x OR c = y OR c = z

從邏輯上c IN (x)推論到c = x. 因此,第一條評論是絕對正確的:除了非常極端的情況(查詢文本的大小實際上受到選擇的充分影響)之外,您不會看到性能差異,但即使在那裡也很難理解性能差異值得一提。

引用自:https://dba.stackexchange.com/questions/17364