Intente enmascarar el parámetro de entrada.
Supongo que la recompilación no funciona debido al valor predeterminado especificado (EDITAR :O parámetro enviado en la primera llamada) que se detecta en tiempo de compilación. Entonces, recompilar no tiene ningún efecto.
He visto una gran diferencia entre los planes estimados simplemente cambiando el valor predeterminado de, por ejemplo, cero a NULL, o no tener 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
Creo que este artículo explica...
EDITAR:
Nuevo enlace sobre planes y parámetros de consulta . Sigue siendo un rastreo de parámetros si se especifica un valor predeterminado o no.
Tipo de artículo relacionado sobre constantes y planes