我有一个非常大的存储过程,只需要一个参数@date
。当我突出显示SQL代码并点击执行时,查询将在大约25秒内运行。但是,如果我尝试使用以下命令在单独的窗口中运行存储过程
Exec <Stored Procedure> @date = '2013-10-16'
存储过程大约需要一个半小时才能运行。有关为什么会发生这种情况的任何想法?我也试图通过BIDS来运行它,并且存储过程也需要很长时间才能运行。
注意:当我突出显示要执行的代码时,我使用
Declare @date as date = '2013-10-16'
设置参数。
答案 0 :(得分:3)
当你说它运行速度很快,如果你声明参数变量并手动运行sql,但是当你通过BIDS运行它需要很长时间我想到参数嗅探。
尝试在SP中声明一个变量,然后你要做的第一件事就是将参数的值赋给这个新的局部变量,然后在SP的每个地方使用局部变量。
了解更多信息:http://blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx