0

我正在使用 SQL Server 2012。最近我的所有存储过程都存在性能问题,但过程中的代码运行速度非常快。

我发现了一些关于参数嗅探的东西,所以我使用定义局部变量技术作为我所有程序的解决方法。

我问自己,为什么在我的所有程序中都会发生这种情况。我唯一的猜测是,那是因为我所有的程序都使用一个 OPTIONAL 参数。

这是我所有程序的标题

CREATE PROC [dbo].[MySampleProc] (@Key  Int = NULL) 
AS
....

我对吗?或者你有什么其他想法?

4

1 回答 1

0

也许不是参数嗅探,而是过时的统计数据。使用局部变量(或 OPTIMIZE FOR UNKNOWN 查询提示),行计数估计基于平均密度。但是,在指定参数时会使用实际的统计直方图值,因此当统计过时时行数估计值将关闭。

尝试使用 更新统计信息FULLSCAN

于 2015-09-26T01:26:49.863 回答