使用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
更新统计数据确保信息最新:
UPDATE STATISTICS ClassA
紧接着展示统计数据:
DBCC SHOW_STATISTICS('ClassA', 'IDX_CreateDate')
统计数据包含三个部分:STAT_HEADER、DENSITY_VECTOR、HISTOGRAM
下表对指定 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)。 |
参考文献:DBCC SHOW_STATISTICS
使用DBCC SHOW_STATISTICS展示索引的统计信息的更多相关文章
- SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇)
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第三篇) 最近真的没有什么精力写文章,天天加班,为了完成这个系列,硬着头皮上了 再看这篇文章之前请大家先看我之前写的第一篇和第二篇 第一篇: ...
- Sybase数据库收集表及其索引的统计信息
更新表及其索引的统计信息: update table statistics 表名 go update index statistics 表名 go 建议此操作在闲时操作.
- Druid是什么和用StatViewServlet用于展示Druid的统计信息
Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池 ...
- SQLServer索引及统计信息
索引除了提高性能,还能维护数据库. 索引是一种存储结构,主要以B-Tree形式存储信息. B-Tree的定义: 1.每个节点最多只有m个节点(m>=2) 2.除了根节点和叶子节点外的每个节点上最 ...
- SQL SERVER 统计信息概述(Statistics)
前言 查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果. ...
- SQL语句调优 - 统计信息的含义与作用及维护计算
统计信息的含义与作用 ...
- sql server 索引阐述系列八 统计信息
一.概述 sql server在快速查询值时只有索引还不够,还需要知道操作要处理的数据量有多少,从而估算出复杂度,选择一个代价小的执行计划,这样sql server就知道了数据的分布情况.索引的统计值 ...
- sql server重建全库索引和更新全库统计信息通用脚本
重建全库索引: exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' 更新全库统计信息: --更新全部统计信息 exec sp_updatestats 实例反馈 ...
- SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. ...
随机推荐
- Git教程之创建版本库(2)
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...
- 233. Number of Digit One
题目: Given an integer n, count the total number of digit 1 appearing in all non-negative integers les ...
- sql中exists,not exists的用法
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select ...
- Regex Tester 安装教程
下载com.brosinski.eclipse.regex_1.4.0.jar 地址:https://github.com/sbrosinski/RegexTester 下载之后把jar包粘贴到${e ...
- Visaul Studio2015安装以及c++单元测试使用方法
Visual Studio 2015安装流程 vs2015是一款十分好用的IDE,接下来就介绍一下安装流程.这里采用在线安装方式,从官网下载使得安装更加安全. 第一步:在百度中搜索Visual ...
- WIN7建立网络映射磁盘
建立网络映射磁盘 如果需要经常访问网络中的同一个共享文件夹,则可以将这个共享文件夹直接映射为本地计算机中的一个虚拟驱动器.其具体操作如下. (1)双击桌面上"计算机"图标,打开&q ...
- Java语言基本语法
Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...
- VS2012界面改为英文
需要下载一个语言包 http://www.microsoft.com/en-us/download/confirmation.aspx?id=30681 还是不要指望这个,简直坑爹. 我把所有中文版的 ...
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
最近在面试Android,今天出了一个这样的题目,即如题: 我当时以为生命周期是这样的: onCreate --> onStart -- ---> onResume ---> onP ...
- UVa 10088 (Pick定理) Trees on My Island
这种1A的感觉真好 #include <cstdio> #include <vector> #include <cmath> using namespace std ...