参数嗅探会降低存储过程的性能

时间:2015-09-25 20:51:24

标签: sql-server query-performance parameter-sniffing

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

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

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

这是我所有程序的标题

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

我是对的吗?或者你还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

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

尝试使用FULLSCAN更新统计信息。