Опитайте да маскирате входния параметър.
Предполагам, че прекомпилирането не работи поради указаното по подразбиране (РЕДАКТИРАНЕ :Или параметър, изпратен при първо повикване), който се надушва по време на компилиране. Така че прекомпилирането няма ефект.
Виждал съм огромна разлика между прогнозните планове просто като промених стойността по подразбиране от, да кажем, нула на NULL или нямах такава.
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
Мисля, че тази статия обяснява...
РЕДАКТИРАНЕ:
Нова връзка към планове и параметри на заявки . Параметърът все още проверява дали е посочена стойност по подразбиране или не.
Вид свързана статия за константи и планове