10、SQL Server查询调优:基数估计与统计信息深度解析

SQL Server查询调优:基数估计与统计信息深度解析

1. 基数估计器的选择

在SQL Server中,若想让某些查询受益于非默认的基数估计器,可以使用查询跟踪标志来强制指定。具体操作如下:
- 使用跟踪标志9481启用旧版基数估计器。
- 使用跟踪标志2312启用新版基数估计器。

示例代码如下:

USE PerformanceV3;
ALTER DATABASE PerformanceV3 SET COMPATIBILITY_LEVEL = 120;

由于数据库兼容性会使SQL Server默认使用新版估计器,若要演示使用旧版估计器,可在查询中使用跟踪标志9481。若数据库需使用兼容性级别120及以上以启用新功能,但仍想默认使用旧版基数估计器,可通过以下方式在服务器级别启用跟踪标志:
- 启动参数: –T9481
- 命令: DBCC TRACEON(9481, –1)

2. 低估和高估基数的影响

准确进行基数估计并非易事,即便使用新版基数估计器,仍可能出现估计不准确的情况,而不准确的估计可能导致优化器做出次优选择。

2.1 低估基数的影响

低估基数通常会导致以下情况:
- 对于过滤器,更倾向于使用索引查找和查找操作,而非扫描。
- 对于聚合、连接和去重操作,更倾向于使用基于排序的算法,而非基于哈希的算法。
- 对于排序和哈希操作,由于内存授予不足,可能会溢出到tem

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值