系統是:SQL Server 2008-R2如何評估SQL OR運算符
我有一個表,它的一列是名爲「Level」的tinyint。 等級是一個非負數。
當我這樣做:
SELECT XXXXX
FROM YYYYY
WHERE (------------) AND
(Level >= @MinLevel) AND
(------------)
我得到一個正確的響應。
在嘗試優化查詢,我試圖做的:
SELECT XXXXX
FROM YYYYY
WHERE (------------) AND
((@MinLevel = 0) OR (Level >= @MinLevel)) AND
(------------)
如果請求的最低水平爲0是沒有必要的最低 級別限制添加到查詢,並通過節省對於操作比較操作(假設在無級指數)
我究竟是一個較長的查詢或至少不低於「未優化」一個較短的查詢。
任何人都可以解釋爲什麼嗎?
嘗試添加`OPTION(RECOMPILE)`這有什麼區別嗎?還有`@ MinLevel`是局部變量還是參數? – 2011-01-27 11:50:18
可能是因爲您試圖從dbms中優化查詢並自己完成這項工作。在大多數情況下,dbms更好。 – Femaref 2011-01-27 11:50:23