Prova a mascherare il parametro di input.
Immagino che la ricompilazione non funzioni a causa dell'impostazione predefinita specificata (EDIT :o parametro inviato alla prima chiamata) che viene annusato in fase di compilazione. Quindi, la ricompilazione non ha effetto.
Ho notato un'enorme differenza tra i piani stimati semplicemente modificando l'impostazione predefinita da, ad esempio, zero a NULL o non avendone uno.
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
Penso che questo articolo spiega...
MODIFICA:
Nuovo collegamento su parametri e piani di query . È ancora lo sniffing dei parametri indipendentemente dal fatto che sia specificato o meno un valore predefinito.
Una specie di articolo correlato su costanti e piani