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
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



