假設我有一個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