在像这样运行查询之前,我经常在顶部“清理”我的存储过程的参数:
-- Scrub params
SET @SearchText = NULLIF(@SearchText, '')
SET @ThreadId = NULLIF(@ThreadId, 0)
SET @Hashtag = NULLIF(@Hashtag, '')
Run Code Online (Sandbox Code Playgroud)
但后来从这篇文章中我读到了以下内容:
如果查询谓词使用局部变量,请考虑重写查询以使用参数而不是局部变量。当查询优化器创建查询执行计划时,局部变量的值是未知的。当查询使用参数时,查询优化器使用传递给存储过程的第一个实际参数值的基数估计。
如果值源自参数,是否算作使用局部变量?我想知道我的参数清理是否会影响查询执行计划的创建。