小编ada*_*101的帖子

在查询之前更改存储过程中的参数值是否会影响基数估计?

在像这样运行查询之前,我经常在顶部“清理”我的存储过程的参数:

-- Scrub params
SET @SearchText = NULLIF(@SearchText, '')
SET @ThreadId = NULLIF(@ThreadId, 0)
SET @Hashtag = NULLIF(@Hashtag, '')
Run Code Online (Sandbox Code Playgroud)

但后来从这篇文章中我读到了以下内容:

如果查询谓词使用局部变量,请考虑重写查询以使用参数而不是局部变量。当查询优化器创建查询执行计划时,局部变量的值是未知的。当查询使用参数时,查询优化器使用传递给存储过程的第一个实际参数值的基数估计。

如果值源自参数,是否算作使用局部变量?我想知道我的参数清理是否会影响查询执行计划的创建。

sql-server stored-procedures parameter-sniffing

3
推荐指数
1
解决办法
810
查看次数