在Sql Server 2005中,當我有多個參數時,我是否保證評估順序將始終爲是從左到右?選擇「where子句」評估順序
使用的一個示例:
select a from table where c=1 and d=2
在該查詢中,如果 「C = 1」 狀態失敗 「d = 2」 條件將永遠不會被評估?
PS-「c」是一個整數索引列,d是一個大的varchar和非可索引的列,需要全表掃描
更新我試圖避免執行兩個查詢或條件語句,我只需要這樣的:如果「c條件」失敗,有一種方法可以避免執行沉重的「d條件」,因爲在我的情況下不需要。
換句話說:NO。 SQL Server會以它認爲最快的方式重新排列你的條件。如果你的條件有副作用(可能通過udf函數調用),這可能會導致問題。 – 2009-01-27 16:56:45
將UDF放入WHERE子句可能會非常緩慢。我們或多或少不得不取締他們的表現如此糟糕。 – Joe 2009-01-27 16:59:57
這不太正確。 – 2009-01-27 17:27:04