根据 MS 文档,其描述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
的时候DISTINCT_RANGE_ROWS
是0
在直方图步骤。
有问题的统计信息是 SQL Server 在启用自动创建统计信息选项时创建的列统计信息。我使用的是旧版本的数据库,但使用的是最新补丁 - SQL Server 2014 SP3、CU4+GDR (12.0.6372.1)。
有点不幸的是,由于次优查询计划,我们上周几乎崩溃了。最终结果是大扫描和膨胀的内存授权。使用更高的百分比值重新采样统计数据暂时为我们解决了这个问题,但我很想知道初始语句或已知问题是否存在异常(可能使用跟踪标志解决?)以及如何解决对于我们无法控制采样大小的自动创建的统计数据,我如何防止这种情况再次发生?