sql-server – 你应该总是预见参数嗅探引起的问题吗?

使用sql server 2008,我有一个简单的存储过程,其内容是

DELETE FROM [ABC].[dbo].[LookUpPermissions] 
WHERE Code = @Code

在最近的代码审查中,DBA说我应该“添加参数嗅探”,我相信这意味着我应该考虑参数嗅探.我以前从未这样做过,我的查询没有任何性能问题所以我认为这是不必要的.

虽然我认为答案可能是用户偏好,但最佳做法是考虑参数嗅探吗?是否有必要在小型数据集上调用存储过程,不经常使用并且没有性能问题?

编辑
这仅适用于WHERE子句中使用的参数,或者例如,您是否可能需要考虑INSERT语句中的所有参数?

最佳答案 像这样的单个值的简单搜索不应该容易受到参数嗅探的影响.当传入的参数产生截然不同的结果并且最佳执行计划与先前产生的计划不同时,这更令人担忧.

例如,考虑一个查询日期列位于@start_date和@end_date之间的行的查询.调用日期范围为2天的程序可能会产生/缓存执行计划,该计划对于1年的日期范围而言不是最佳的.

点赞