根据 MS docs,描述为AVG_RANGE_ROWS
:
直方图步骤中具有重复列值的平均行数,不包括上限。当 DISTINCT_RANGE_ROWS 大于 0 时,通过将 RANGE_ROWS 除以 DISTINCT_RANGE_ROWS 来计算 AVG_RANGE_ROWS。当 DISTINCT_RANGE_ROWS 为 0 时,AVG_RANGE_ROWS 为直方图步骤返回 1。
我正在查看最后一行,如果确实如此,我很想知道为什么我在直方图步骤中看到的值AVG_RANGE_ROWS
不等于1
when DISTINCT_RANGE_ROWS
is 。0
有问题的统计信息是 SQL Server 在自动创建统计信息选项打开时创建的列统计信息。我使用的是旧版本的数据库,但使用的是最新补丁 - SQL Server 2014 SP3、CU4+GDR (12.0.6372.1)。
有点不幸的是,上周我们几乎因为一个次优的查询计划而崩溃。最终结果是大扫描和臃肿的内存授权。用更高的百分比值重新采样统计数据暂时为我们解决了这个问题,但我很想知道初始语句周围是否有异常或已知问题(可能使用跟踪标志解决?)以及如何对于我们无法控制采样大小的自动创建的统计数据,我是否可以防止这种情况再次发生?