我有一个比我预期的时间更长的时间。
我拿出SQL并使用DECLARED变量为参数运行它。它几乎是瞬间运行(与sproc相比可靠的8秒)。这是同一台机器上的相同SQL,返回相同的数据。
如何找出并修复导致sproc变慢的原因?
这是在SQL Server Express上。
非常感谢。
答案 0 :(得分:1)
这是参数嗅探。只需更改您的程序以执行相同的操作:将所有参数复制到局部变量中,而不是让过程的主体使用loal变量。
答案 1 :(得分:1)
在存储过程的定义中,检查ANSI_NULLS
。确保已打开此功能。 (SET ANSI_NULLS ON
)
默认情况下,在SSMS的查询窗口中,它已打开。我们发现了一个问题,其中ANSI_NULLS
被明确设置为off并且它大大减慢了sproc。
答案 2 :(得分:0)
是运行存储过程的应用程序,还是通过查询分析器运行存储过程?