我曾經看到有人建議將參數複製到本地變量以避免參數在存儲過程中嗅探。假設你有在SQL Server 2005中解決參數嗅探
CREATE PROCEDURE List_orders_3 @fromdate datetime AS
DECLARE @fromdate_copy datetime
SELECT @fromdate_copy = @fromdate
SELECT * FROM Orders WHERE OrderDate > @fromdate_copy
(我得到這個從http://www.sommarskog.se/query-plan-mysteries.html但我需要更多的細節,充分理解它)。
但是,這對於查詢計劃緩存和查詢計劃優化器實際做了什麼?如果優化器對@fromdate_copy沒有任何假設是真的,那爲什麼它不會緩存最有可能成爲全表掃描的計劃(因爲它不做任何假設,它怎麼會產生其他東西)?
這種技術基本上就像一個「沒有投入將運行良好,但沒有投入將運行非常可怕」?
不幸的是肯在2008年去世了。 – 2011-05-24 17:24:15
僅供參考這是「參數掩蔽」 – gbn 2011-05-24 19:16:28
rellly ... 我不知道 :( – 2011-05-24 23:31:35