• 使用DBCC SHOW_STATISTICS展示索引的统计信息


    在开始之前搭建演示环境:

    USE master
    GO
    SET NOCOUNT ON
    
    --创建表结构
    IF OBJECT_ID(N'ClassA', N'U') IS NOT NULL
        DROP TABLE ClassA
    CREATE TABLE ClassA(ID INT PRIMARY KEY, Name VARCHAR(16), CreateDate DATETIME)
    CREATE INDEX IDX_CreateDate ON ClassA(CreateDate)
    GO
    
    --插入测试数据
    DECLARE @ID INT
    SET @ID = 1
    WHILE @ID <= 10000
    BEGIN
        INSERT INTO ClassA VALUES(@ID, 'fx', GETDATE())
        SET @ID = @ID + 1
    END

    确保数据正确插入:

    SELECT 'ClassA' AS ClassA, COUNT(1) AS Count FROM ClassA

    image

    更新统计数据确保信息最新:

    UPDATE STATISTICS ClassA

    紧接着展示统计数据:

    DBCC SHOW_STATISTICS('ClassA', 'IDX_CreateDate')

    统计数据包含三个部分:STAT_HEADER、DENSITY_VECTOR、HISTOGRAM

    image

    下表对指定 STAT_HEADER 时结果集中所返回的列进行了说明。

    列名

    说明

    Name

    统计信息对象的名称。

    Updated

    上一次更新统计信息的日期和时间。STATS_DATE 函数是另一种检索此信息的方法。

    Rows

    上次更新统计信息时表或索引视图中的总行数。如果筛选统计信息或者统计信息与筛选索引对应,该行数可能小于表中的行数。有关详细信息,请参阅使用统计信息提高查询性能

    Rows Sampled

    用于统计信息计算的抽样总行数。如果 Rows Sampled < Rows,显示的直方图和密度结果则是根据抽样行估计的。

    Steps

    直方图中的梯级数。每个梯级都跨越一个列值范围,后跟上限列值。直方图梯级是根据统计信息中的第一个键列定义的。最大梯级数为 200。

    Density

    计算公式为:1/统计信息对象第一个键列中的所有值(不包括直方图边界值)的非重复值。查询优化器不使用此 Density 值,显示此值的目的是为了与 SQL Server 2008 之前的版本实现向后兼容。

    Average Key Length

    统计信息对象中所有键列的每个值的平均字节数。

    String Index

    Yes 指示统计信息对象包含字符串摘要统计信息,以改进对使用 LIKE 运算符的查询谓词的基数估计;例如 WHERE ProductName LIKE '%Bike'。字符串摘要统计信息与直方图分开存储,如果统计信息对象为charvarcharncharnvarcharvarchar(max)nvarchar(max)textntext. 类型,则基于其第一个键列创建字符串摘要统计信息。

    Filter Expression

    包含在统计信息对象中的表行子集的谓词。NULL = 未筛选的统计信息。有关筛选的谓词的详细信息,请参阅筛选索引设计准则。有关更筛选的统计信息的详细信息,请参阅使用统计信息提高查询性能

    Unfiltered Rows

    应用筛选表达式前表中的总行数。如果筛选表达式为 NULL,则 Unfiltered Rows 等于 Rows。

    下表对指定 DENSITY_VECTOR 时结果集中所返回的列进行了说明。

    列名

    说明

    All Density

    Density 为 1/非重复值。结果显示统计信息对象中各列的每个前缀的密度,每个密度显示一行。非重复值是每个行前缀和列前缀的列值的非重复列表。例如,如果统计信息对象包含键列 (A, B, C),结果将报告以下每个列前缀中非重复值列表的密度:(A)、(A,B) 以及 (A, B, C)。使用前缀 (A, B, C),以下每个列表都是一个非重复值列表:(3, 5, 6)、(4, 4, 6)、(4, 5, 6) 和 (4, 5, 7)。使用前缀 (A, B),相同列值则具有以下非重复值列表:(3, 5)、(4, 4) 和 (4, 5)。

    Average Length

    存储列前缀的列值列表的平均长度(以字节为单位)。例如,如果列表 (3, 5, 6) 中的每个值都需要 4 个字节,则长度为 12 个字节。

    Columns

    为其显示 All density 和 Average length 的前缀中的列的名称。

    下表对指定 HISTOGRAM 选项时结果集中所返回的列进行了说明。

    列名

    说明

    RANGE_HI_KEY

    直方图梯级的上限列值。列值也称为键值。

    RANGE_ROWS

    其列值位于直方图梯级内(不包括上限)的行的估算数目。

    EQ_ROWS

    其列值等于直方图梯级的上限的行的估算数目。

    DISTINCT_RANGE_ROWS

    非重复列值位于直方图梯级内(不包括上限)的行的估算数目。

    AVG_RANGE_ROWS

    重复列值位于直方图梯级内(不包括上限)的平均行数(如果 DISTINCT_RANGE_ROWS > 0,则为 RANGE_ROWS / DISTINCT_RANGE_ROWS)。

    参考文献:DBCC SHOW_STATISTICS

  • 相关阅读:
    博客园 如何给上传的图片添加水印?
    今天把这三篇文章看完(DeepFM/NN/BN)
    今天看了这篇文章,还是要提前做好准备
    POJ1988Cube Stacking
    AcWing 1250. 格子游戏
    POJ 1962 Corporative Network [带权并查集]模板
    AcWing 477. 神经网络
    埃拉托色尼筛法和欧拉筛法
    AcWing 1252. 搭配购买
    AcWing 2128. 狡猾的商人
  • 原文地址:https://www.cnblogs.com/fengxiang/p/3828653.html
Copyright © 2020-2023  润新知