2

我有一个非常大的存储过程,它需要一个参数@date。当我突出显示 SQL 代码并点击执行时,查询会在大约 25 秒内运行。但是,如果我尝试使用以下方法在单独的窗口中运行存储过程:

Exec <Stored Procedure> @date = '2013-10-16'

存储过程大约需要一个半小时才能运行。关于为什么会发生这种情况的任何想法?我也试图通过 BIDS 运行它,并且存储过程需要同样长的时间才能运行。

注意:当我突出显示要执行的代码时,我使用

Declare @date as date = '2013-10-16'

设置参数。

4

1 回答 1

3

当你说如果你声明参数变量并手动运行 sql 它运行得很快,但是当你通过 BIDS 运行它时,我想到了参数嗅探。

尝试在您的 SP 中声明一个变量,然后您要做的第一件事是将参数的值分配给这个新的局部变量,然后在您的 SP 中的任何地方使用该局部变量。

欲了解更多信息:http: //blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx

于 2013-10-17T15:47:23.757 回答