DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息
来源:互联网 发布:抑抑陆生,知言之贯 编辑:程序博客网 时间:2024/05/16 11:34
DBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息。查询优化器使用统计信息估计查询结果中的基数或行数,这样,查询优化器可以创建高质量的查询计划。例如,查询优化器可以使用基数估计在查询计划中选择索引查找运算符而不是索引扫描运算符,从而通过避免消耗大量资源的索引扫描来提高查询性能。
查询优化器将表或索引视图的统计信息存储在统计信息对象中。对于表,统计信息对象是根据索引或表列的列表创建的。统计信息对象包含一个带有统计信息的相关元数据的标题、一个带有统计信息对象第一个键列中的值的分布的直方图,以及一个用于度量各列之间的相关性的密度向量。数据库引擎可以使用统计信息对象中的任何数据计算基数估计。
DBCC SHOW_STATISTICS 根据统计信息对象中存储的数据显示标题、直方图和密度向量。使用以下语法,您可以指定表或索引视图以及目标索引名称、统计信息名称或列名。本主题说明如何显示统计信息以及如何理解显示的结果。
有关详细信息,请参阅使用统计信息提高查询性能。
Transact-SQL 语法约定
DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target ) [ WITH [ NO_INFOMSGS ] < option > [ , n ] ]< option > :: = STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
下表对指定 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'。字符串摘要统计信息与直方图分开存储,如果统计信息对象为char、varchar、nchar、nvarchar、varchar(max)、nvarchar(max)、text 或 ntext. 类型,则基于其第一个键列创建字符串摘要统计信息。
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)。
直方图
直方图度量数据集中每个非重复值的出现频率。查询优化器根据统计信息对象第一个键列中的列值来计算直方图,它选择列值的方法是以统计方式对行进行抽样或对表或视图中的所有行执行完全扫描。如果直方图是根据一组抽样行创建的,存储的总行数和非重复值总数则为估计值,且不必为整数。
若要创建直方图,查询优化器将对列值进行排序,计算与每个非重复列值匹配的值数,然后将列值聚合到最多 200 个连续直方图梯级中。每个梯级都包含一个列值范围,后跟上限列值。该范围包括介于两个边界值之间的所有可能列值,但不包括边界值自身。最小排序列值是第一个直方图梯级的上限值。
下面的关系图显示包含六个梯级的直方图。第一个上限值左侧的区域是第一个梯级。
对于每个直方图梯级:
粗线表示上限值 (RANGE_HI_KEY) 和上限值的出现次数 (EQ_ROWS)
RANGE_HI_KEY 左侧的纯色区域表示列值范围和每个列值的平均出现次数 (AVG_RANGE_ROWS)。第一个直方图梯级的 AVG_RANGE_ROWS 始终是 0。
点线表示用于估计范围中的非重复值总数 (DISTINCT_RANGE_ROWS) 和范围中的总值数 (RANGE_ROWS) 的抽样值。查询优化器使用 RANGE_ROWS 和 DISTINCT_RANGE_ROWS 计算 AVG_RANGE_ROWS,且不存储抽样值。
查询优化器按照直方图梯级的统计重要性来定义直方图梯级。它使用最大差异算法使直方图中的梯级减至最少,并同时最大化边界值之间的差异。最大梯级数为 200。直方图梯级数可以少于非重复值的数目,即使对于边界点少于 200 的列也是如此。例如,具有 100 个非重复值的列所具有的直方图的边界点可以少于 100。
密度向量
查询优化器使用密度提高根据相同表或索引视图返回多个列的查询的基数估计。密度向量针对统计信息对象中的列的每个前缀包含一个密度。例如,如果统计信息对象包含键列 CustomerId、ItemId、Price,则根据以下每个列前缀计算密度。
列前缀
计算密度所基于的对象
(CustomerId)
具有与 CustomerId 匹配的值的行
(CustomerId, ItemId)
具有与 CustomerId 和 ItemId 匹配的值的行
(CustomerId, ItemId, Price)
具有与 CustomerId、ItemId 和 Price 匹配的值的行
限制
DBCC SHOW_STATISTICS 不提供空间索引的统计信息。
若要查看统计信息对象,用户必须是表所有者,或者是 sysadmin 固定服务器角色、db_owner 固定服务器角色或 db_ddladmin 固定数据库角色的成员。
A. 返回所有统计信息
下面的示例显示 Person.Address 表的 AK_Product_Name 索引的所有统计信息。
USE AdventureWorks2008R2;GODBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);GO
B. 指定 HISTOGRAM 选项
下面的示例将为 AK_Product_Name 索引显示的统计信息限制为 HISTOGRAM 数据。
USE AdventureWorks2008R2;GODBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid) WITH HISTOGRAM;GO
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOWCONTIG显示指定的表或视图的数据和索引的碎片信息
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKTABLE检查组成表或索引视图的所有页和结构的完整性
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CLEANTABLE回收表或索引视图中已删除的可变长度列的空间
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC INDEXDEFRAG指定表或视图的索引碎片整理
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC OUTPUTBUFFER以十六进制和 ASCII 格式返回指定 session_id 的当前输出缓冲区
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC DBREINDEX对指定数据库中的表重新生成一个或多个索引
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC FREEPROCCACHE
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC TRACESTATUS显示跟踪标志的状态
- DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SQLPERF提供所有数据库的事务日志空间使用情况统计信息
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC PROCCACHE以表格格式显示有关过程缓存的信息
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC HELP返回指定的 DBCC 命令的语法信息
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC DBREPAIR禁用指定的跟踪标记
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC TRACEON启用指定的跟踪标记
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKFILEGROUP检查当前数据库中指定文件组中的所有表和索引视图的分配和结构完整性
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKFILEGROUP检查当前数据库中指定文件组中的所有表和索引视图的分配和结构完整性
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKFILEGROUP检查当前数据库中指定文件组中的所有表和索引视图的分配和结构完整性
- 前端知识汇总【面试用】(二)
- Spring jws 快速发布webservice
- 细说websocket - php篇
- android 幻灯片 图片来自instagram 图片大且多,使用软引用,幻灯片播放还有水平滑动使用ViewFliper
- 左侧蓝 目录树
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息
- 网站左侧广告代码(商务通)
- 2013年新浪微博媒体报告年度盘点
- OSX: 读书笔记-Plist偏好配置文件编程-附用Python访问
- View requires API level 14 (current min is 8): <GridLayout>
- 我对工作的理解
- 你用的浏览器速度如何?最快浏览器引擎内核实测与回顾
- LeetCode之Remove Duplicates from Sorted List
- Magento shows blank/empty page. How do I solve this?