SQL Server 2014
引入新的基数估计器
SQL Server 2014 的性能改进之一是对基数估计的重新设计。进行基数估计(CE)的组件称为基数估计器。它是用于生成查询计划的 SQL 查询处理器的基本组件。基数估计是对最终行数和中间结果(例如连接、过滤和聚合)的行数的预测。这些估计对连接顺序、连接类型等计划选择有直接影响。在 SQL Server 2014 之前,基数估计器主要基于 SQL Server 7.0 代码库。SQL Server 2014 引入了新的设计,新的基数估计器基于对现代工作负载的研究和从过去的经验中学习。
跟踪标志9481
并可2312
用于控制使用哪个版本的基数估计器。
检查导致问题的查询并比较执行计划属性估计的行数与2008 年和 2014 年的实际行数值。
Microsoft SQL Server 2014 中的基数估计
您可以在SQL Server 2016+
不使用跟踪标志或将数据库兼容级别更改为 110 的情况下为每个数据库设置旧的基数估计器。
更改数据库范围的配置
此语句允许在单个数据库级别配置多个数据库配置设置,独立于任何其他数据库的这些设置。
LEGACY_CARDINALITY_ESTIMATION = { 开 | 关闭 | 基本的 }
使您能够将查询优化器基数估计模型设置为SQL Server 2012
独立于数据库兼容级别的早期版本。这相当于Trace Flag 9481
. 要在实例级别进行设置,请参阅跟踪标志 (Transact-SQL)。要在查询级别完成此操作,请添加QUERYTRACEON
查询提示。
在
将查询优化器基数估计模型设置为 SQL Server 2012 和更早版本的基数估计模型。
离开
根据数据库的兼容级别设置查询优化器基数估计模型。
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;