Option(Optimize For Unknown)与带参数Optimize for (@id Unknown)的区别
两个
OPTIMIZE FOR查询提示的区别 这两个都是SQL Server中用于干预参数嗅探行为的查询提示,核心差异是作用范围不同:
OPTION (OPTIMIZE FOR UNKNOWN)
属于全局作用的提示:编译执行计划时,优化器会忽略当前传入的所有参数的实际值,直接基于对应列统计信息的平均分布密度来估算基数,生成通用性最高的执行计划,避免因首次传入的参数值分布特殊,生成只适配该类值的偏科执行计划。OPTION (OPTIMIZE FOR (@id UNKNOWN))
属于细粒度控制的提示:仅对指定的@id参数生效,编译时只有@id会用统计信息的平均密度做基数估算,查询中用到的其他参数仍然会使用首次传入的实际值做估算。适合仅某一个参数分布极不均匀、容易触发坏计划,其他参数用实际值估算准确度更高的场景。
内容的提问来源于stack exchange,提问作者RobMartin
相关产品推荐
相关产品推荐

