sproc执行远比SQL ad-hoc查询等效

时间:2009-08-21 03:48:04

标签: sql sql-server performance tsql stored-procedures

我有一个比我预期的时间更长的时间。

我拿出SQL并使用DECLARED变量为参数运行它。它几乎是瞬间运行(与sproc相比可靠的8秒)。这是同一台机器上的相同SQL,返回相同的数据。

如何找出并修复导致sproc变慢的原因?

这是在SQL Server Express上。

非常感谢。

3 个答案:

答案 0 :(得分:1)

这是参数嗅探。只需更改您的程序以执行相同的操作:将所有参数复制到局部变量中,而不是让过程的主体使用loal变量。

答案 1 :(得分:1)

在存储过程的定义中,检查ANSI_NULLS。确保已打开此功能。 (SET ANSI_NULLS ON

默认情况下,在SSMS的查询窗口中,它已打开。我们发现了一个问题,其中ANSI_NULLS被明确设置为off并且它大大减慢了sproc。

答案 2 :(得分:0)

是运行存储过程的应用程序,还是通过查询分析器运行存储过程?