Sql-Server
在 sql 查詢中使用 OPTIMIZE FOR 提示
據我所知,OPTIMIZE FOR 提示有助於避免參數嗅探。
對於這樣的儲存過程:
SELECT * FROM Tabele WHERE param=@param1
我們有兩個
S1
具有高選擇性和s2
低選擇性的參數。如果我們使用這樣的提示:
OPTION(OPTIMIZE FOR @param1=s1)
然後發送
s2
到儲存過程,我們還有參數嗅探。現在我有一個概念性問題!:
OPTIMZE FOR 提示如何真正幫助我們避免參數嗅探?
OPTIMIZE FOR
用於為特定查詢制定良好的計劃。一個典型的例子是經常使用相同參數執行的傾斜數據的報告。在這種情況下,優化最常見參數的查詢可能很有用。這是一個權衡,因為具有不同參數的其他查詢會使計劃變得更糟。如果您遭受參數嗅探的困擾,您可以使用
OPTIMIZE FOR UNKNOWN
,OPTION RECOMPILE
或局部變數。這些都不是靈丹妙藥,因此請仔細對查詢進行基準測試。確保問題確實是參數嗅探,而不是過時的統計資訊。