Spróbuj zamaskować parametr wejściowy.
Przypuszczam, że rekompilacja nie działa z powodu określonego ustawienia domyślnego (EDYTUJ :Lub parametr wysyłany przy pierwszym wywołaniu) wykrywany w czasie kompilacji. Tak więc ponowna kompilacja nie ma żadnego efektu.
Widziałem ogromną różnicę między szacowanymi planami, po prostu zmieniając domyślną wartość z, powiedzmy, zero na NULL lub nie mając go.
ALTER PROCEDURE [usp_debug_mightwork]
@DATA_DT_ID AS int = 20081130
AS
BEGIN
DECLARE @IDATA_DT_ID AS int
SET @IDATA_DT_ID = @DATA_DT_ID
-- Stuff here that depends on IDATA_DT_ID
END
Myślę, że ten artykuł wyjaśnia...
EDYCJA:
Nowy link do planów i parametrów zapytań . Wciąż jest to wąchanie parametrów, czy określono wartość domyślną, czy nie.
Rodzaj powiązanego artykułu o stałych i planach