[SQL SERVER] 什么是参数探测 (Parameter Sniffing) ,参数嗅探

摘要:[SQL SERVER] 什么是参数探测 (Parameter Sniffing)


一般来说Stored procedure在第一次执行时,会把compile好的plan丢到plan cache里面

下一次执行时,会从cache里面取出,再次使用,让数据库减少compile的动作

这时候就会出现参数探测(parameter sniffing)这种潜在问题

因为可能因为参数的差异导致结果集差异过大,而非最佳化的效率

例如:

某一stored procedure可能是查询订单细目资讯,而参数为日期

平时只会执行当日一天的结果,但是如果查询为数年的结果

可能因为使用了一日结果的plan,导致效率很差

解决方式

  • OPTION (RECOMPILE)
  • OPTION (OPTIMIZE FOR (@VARIABLE=VALUE))
  • OPTION (OPTIMIZE FOR (@VARIABLE UNKNOWN))
  • Use local variables

写到一半..............晚点补充

原文:大专栏  [SQL SERVER] 什么是参数探测 (Parameter Sniffing) ,参数嗅探


猜你喜欢

转载自www.cnblogs.com/chinatrump/p/11466747.html