我試圖優化查詢以儘可能優化執行,我發現某些代碼是別人編寫的並且已經與他們討論過,他們似乎認爲以下是表現最好的:在ISNULL中包含CASE語句時的SQL性能
ISNULL(CASE WHEN A = 1 THEN 1 END, 0)
不過,我說,這可以通過以下方式進行明確,並可能更有效:
CASE WHEN A = 1 THEN 1 ELSE 0 END
我在網上找了一個類似的案件,但似乎無法找到一個明確的答案,所以我正在尋找一個人更多有關基於性能的T-SQL設計的經驗,讓我更好地瞭解哪個(如果有的話)執行速度更快。
* * *變體實際上是應用程序性能瓶頸的機率可以忽略不計。不要把注意力集中在錯誤的地方。如果你有特定的目標,並且與這些目標相比你有一個*可衡量的*績效赤字,那麼計算出*真實*熱點的位置並將注意力集中在那裏。 –
我同意@Damien_The_Unbeliever,並補充一點,請記住,ISNULL將評估數據_before_存在的任何數據類型的評估發生。如果刪除了ISNULL,必要時將嘗試隱式數據類型,這可能會導致性能問題。儘管如此,這是無關緊要的。 – Phoenix
您可以檢查查詢計劃,以查看查詢引擎是否實際上存在差異 - 看起來像是一個非常小的微型優化,儘管它根本就沒有。 – Andrew