Zkuste zamaskovat vstupní parametr.
Předpokládám, že rekompilace nefunguje kvůli zadané výchozí hodnotě (EDIT :Nebo parametr odeslaný při prvním volání) je sniffován v době kompilace. Takže rekompilace nemá žádný účinek.
Viděl jsem obrovský rozdíl mezi odhadovanými plány jednoduše změnou výchozího nastavení z řekněme nuly na NULL nebo bez něj.
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
Myslím, že tento článek vysvětluje...
EDIT:
Nový odkaz na plány dotazů a parametry . Je to stále parametr sniffing, zda je zadána výchozí hodnota nebo ne.
Související článek o konstantách a plánech