所以这里有点奇怪……
我有一个存储过程需要40秒才能运行.
我将存储过程的内容复制到一个新的查询窗口,更改2个输入参数(这两个日期),以便声明和设置它们,然后运行查询.它基本上是即时的,低于1秒执行.
唯一的区别是存储过程将2个日期作为参数. @H_404_5@任何人都知道是什么让这种情况发生的? @H_404_5@(我正在运行sql Server 2005)
我有一个存储过程需要40秒才能运行.
我将存储过程的内容复制到一个新的查询窗口,更改2个输入参数(这两个日期),以便声明和设置它们,然后运行查询.它基本上是即时的,低于1秒执行.
唯一的区别是存储过程将2个日期作为参数. @H_404_5@任何人都知道是什么让这种情况发生的? @H_404_5@(我正在运行sql Server 2005)
解决方法
重新编译会嗅探参数,因此它没有任何区别.
@H_404_5@This article explains my statement …
@H_404_5@…parameter values are sniffed during@H_404_5@您需要屏蔽参数:
compilation or recompilation…
ALTER PROCEDURE [uspFoo] @Date1 datetime,@Date2 datetime AS BEGIN DECLARE @IDate1 datetime,@IDate2 datetime; SELECT @IDate1 = @Date1,@IDate2 = @Date2; -- Stuff here that depends on @IDate1 and @IDate2 END