适用于:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric中的SQL数据库
你可以使用 SQL Server Management Studio 或 Transact-SQL 显示 SQL Server 中表或索引视图的当前查询优化统计信息。 统计信息对象包含一个带有统计信息的相关元数据的标题、一个带有统计信息对象第一个键列中的值的分布的直方图,以及一个用于度量各列之间的相关性的密度向量。 有关直方图和密度向量的详细信息,请参阅 DBCC SHOW_STATISTICS (Transact-SQL)
本主题内容
开始之前:
若要查看统计信息属性,请使用:
开始之前
安全性
Permissions
若要查看统计信息对象,用户必须是表所有者,或者是 sysadmin 固定服务器角色、 db_owner 固定数据库角色或 db_ddladmin 固定数据库角色的成员。
使用 SQL Server Management Studio
查看统计信息属性
在 “对象资源管理器”中,单击加号以便展开要创建新的统计信息的数据库。
单击加号以便展开 “表” 文件夹。
单击加号以展开要查看统计信息的属性的表。
单击加号以便展开 “统计信息” 文件夹。
双击要查看其属性的统计信息对象,然后选择“属性”。
在“统计信息属性 - statistics_name”对话框的“选择页”窗格中,选择“详细信息”。
以下属性将显示在“统计信息属性 - statistics_name”对话框的“详细信息”页上。
表名
显示统计信息中所涉及表的名称。统计信息名称
显示存储统计信息的数据库对象的名称。INDEX 统计信息 statistics_name
此文本框显示从统计信息对象返回的属性。 此属性分为三个部分:统计信息头、密度向量和直方图。下面的信息介绍结果集中为统计信息头返回的列。
Name
统计信息对象的名称。Updated
上一次更新统计信息的日期和时间。Rows
上次更新统计信息时表或索引视图中的总行数。 如果筛选统计信息或者统计信息与筛选索引对应,该行数可能小于表中的行数。采样的行
用于统计信息计算的抽样总行数。 如果 Rows Sampled < Rows,显示的直方图和密度结果则是根据抽样行估计的。Steps
直方图中的梯级数。 每个梯级都跨越一个列值范围,后跟上限列值。 直方图梯级是根据统计信息中的第一个键列定义的。 最大梯级数为 200。Density
计算公式为 1/统计信息对象第一个键列中的所有值(不包括直方图边界值)的非重复值。 查询优化器不使用此 Density 值,显示此值的目的是为了与 SQL Server 2008 之前的版本实现向后兼容。平均密钥长度
统计信息对象中所有键列的每个值的平均字节数。字符串索引
Yes 指示统计信息对象包含字符串摘要统计信息,以改进对使用 LIKE 运算符的查询谓词的基数估计;例如WHERE ProductName LIKE '%Bike'。 字符串摘要统计信息与直方图分开存储,如果统计信息对象为 char、varchar、nchar、nvarchar、varchar(max)、nvarchar(max)、text 或 ntext 类型,则基于其第一个键列创建字符串摘要统计信息。筛选表达式
包含在统计信息对象中的表行子集的谓词。 NULL = 未筛选的统计信息。未筛选的行
应用筛选表达式前表中的总行数。 如果筛选表达式为 NULL,则 Unfiltered Rows 等于 Rows。下面的信息介绍结果集中为密度向量返回的列。
所有密度
密度为 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)。平均长度
存储列前缀的列值列表的平均长度(以字节为单位)。 例如,如果列表 (3, 5, 6) 中的每个值都需要 4 个字节,则长度为 12 个字节。Columns
为其显示 All density 和 Average length 的前缀中的列的名称。下面的信息介绍结果集中为直方图返回的列。
RANGE_HI_KEY
直方图梯级的上限列值。 列值也称为键值。RANGE_ROWS
其列值位于直方图梯级内(不包括上限)的行的估算数目。EQ_ROWS
其列值等于直方图梯级的上限的行的估算数目。DISTINCT_RANGE_ROWS
非重复列值位于直方图梯级内(不包括上限)的行的估算数目。AVG_RANGE_ROWS
重复列值位于直方图梯级内(不包括上限)的平均行数(如果 DISTINCT_RANGE_ROWS > 0,则为 RANGE_ROWS / DISTINCT_RANGE_ROWS)。单击 “确定” 。
“使用 Transact-SQL”
查看统计信息属性
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。
USE AdventureWorks2022; GO -- The following example displays all statistics information for the AK_Address_rowguid index of the Person.Address table. DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid); GO
有关详细信息,请参阅 DBCC SHOW_STATISTICS (Transact-SQL)。
查找表或视图上的所有统计信息
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。
USE AdventureWorks2022; GO /*Gets the following information: name and ID of the statistics, whether the statistics were created automatically or by the user, whether the statistics were created with the NORECOMPUTE option, and whether the statistics have a filter and, if so, what that filter is. */ SELECT name AS statistics_name ,stats_id ,auto_created ,user_created ,no_recompute ,has_filter ,filter_definition -- using the sys.stats catalog view FROM sys.stats -- for the Sales.SpecialOffer table WHERE object_id = OBJECT_ID('Sales.SpecialOffer'); GO
有关详细信息,请参阅 sys.stats (Transact-SQL)。