Försök att maskera indataparametern.
Jag antar att omkompileringen inte fungerar på grund av den angivna standardinställningen (EDIT :Eller parameter som skickas vid första anropet) som sniffas vid kompileringstillfället. Så kompilering har ingen effekt.
Jag har sett enorma skillnader mellan uppskattade planer helt enkelt genom att ändra standard från säg noll till NULL, eller inte ha någon.
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
Jag tror att denna artikel förklarar...
EDIT:
Ny länk på frågeplaner och parametrar . Det är fortfarande parametersniffning oavsett om en standard är angiven eller inte.
Sorts relaterad artikel om konstanter och planer