zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    257. Binary Tree Paths
    324. Wiggle Sort II
    315. Count of Smaller Numbers After Self
    350. Intersection of Two Arrays II
    295. Find Median from Data Stream
    289. Game of Life
    287. Find the Duplicate Number
    279. Perfect Squares
    384. Shuffle an Array
    E
  • 原文地址:https://www.cnblogs.com/fengxiang/p/3828653.html
Copyright © 2011-2022 走看看