尝试掩盖输入参数。
我猜因为在编译时嗅到了指定的默认值( EDIT :或首次调用时发送的参数),所以重新编译无法正常进行。因此,重新编译无效。
我已经看到了估计的计划之间的巨大差异,只需将默认值(例如,从零更改为NULL或不包含一个)就可以了。
ALTER PROCEDURE [usp_debug_mightwork] @DATA_DT_ID AS int = 20081130ASBEGIN DECLARE @IDATA_DT_ID AS int SET @IDATA_DT_ID = @DATA_DT_ID -- Stuff here that depends on IDATA_DT_IDEND
我认为这篇文章解释了…
…在编译或重新编译期间会嗅探参数值…
编辑:
有关查询计划和参数的新链接。仍然是参数嗅探是否指定了默认值。
上面的GetRecentSales存储过程中指定的WITH RECOMPILE选项不能消除基数估计错误
有关常量和计划的相关文章种类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)