博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server性能优化(9)聚集索引的存储结构
阅读量:7294 次
发布时间:2019-06-30

本文共 1487 字,大约阅读时间需要 4 分钟。

一、索引的概念和分类

索引的概念大家都知道,日常开发中我们也会使用常见的聚集索引、非聚集索引。但是除了这两者以外,sqlserver中还提供其他的索引,如:

a. 唯一索引:不包含重复键的索引,聚集索引或者非聚集索引都可以是唯一索引。

b. 包含列的索引:它扩展后不仅包含键列,还包含非键列。

c. 全文索引

d. 空间索引

e. 筛选索引

f. XML

当然以上几种除了a和b基本上没用到过。

二、聚集索引的结构

要想使用聚集索引,必须了解聚集索引的概念以及它的原理。网上对聚集索引描述的资料有很多,最通俗的解释就是拿字典举例:如我们的在新华字典里用拼音查一个汉字“索”的时候,是先从字典最开始几页的字母“s”开始,然后查“suo”,然后找到“索”这个字,根据它的页数,一下翻到这个字所在的页数。

当然这要求,

1. 所有的新华字典里的汉字都按照拼音字母顺序排列。

2. 新华字典前面都有一个拼音的查找附录。

聚集索引也是这个道理,

1. 有一个所有数据的“拼音”列表,即索引。

2. 所有数据根据这个索引在硬盘上有序排列,这个排列顺序就是B树。

B树的概念:

聚集索引的结构

聚集索引的级别

创建测试数据

--创建测试数据库CREATE DATABASE IxTestGOUSE IxTestGO---创建测试表CREATE TABLE Users(    ID INT PRIMARY KEY IDENTITY(1,1),    NAME CHAR(80)NOT NULL,    CreateTime DATETIME NOT NULL DEFAULT(GETDATE()));GO---插入1000条测试数据DECLARE @ID INT=1WHILE(@ID<=1000)BEGIN    INSERT INTO Users(NAME)VALUES('张三'+CONVERT(NVARCHAR(20),@ID))SET @ID=@ID+1 ENDGOSELECT * FROM Users GO

查看页面信息

---显示跟踪标志的状态DBCC TRACESTATUS---开启跟踪标志DBCC TRACEON(3604,2588)--DBCC TRACEOFF(3604,2588)---获取对象的数据页,结构:数据库、对象、显示DBCC IND(IxTest,Users,-1) /*最后一个参数的意思 1:显示所有分页的信息,包括IAM分页,数据分页,所有存在的LOB分页和行溢出页,索引分页 -1: 显示所有IAM、数据分页、及指定对象上全部索引的索引分页. -2: 显示指定对象的所有IAM分页 0:显示所有IAM、数据分页. */

再看下索引页(77)的信息

DBCC page(IxTest,1,77,3)

页面内部的信息

再分析数据页(22页)

DBCC page(IxTest,1,22,3)

最后回顾下页面信息的分配状态信息

通过以上描述,我们大体了解了表聚集索引的文件组织结构。当我们按照索引(如ID=100)来查找某一条数据时,经过以下几步

1. 首先查找索引页,找到这个ID所在的页(这个页在索引里是一行),如第一行是(0~80),第二行是(81~160)。然后定位到这一行。

2. 这一行里对应的页的ID,找到这个页。

3. 从硬盘读取这个页。

所以,本次查询操作是2次硬盘读写,第一次读取索引页,第二次读取数据页。

参考:

文内图片内的具体参数解释:

转载于:https://www.cnblogs.com/ustcyc/p/4524612.html

你可能感兴趣的文章
[20161219]关于LANGUAGE_MISMATCH.txt
查看>>
天使投资乱象频出 熟人元素何时剔除
查看>>
使用SQLCMD在SQLServer执行多个脚本
查看>>
如何使用通用Mapper
查看>>
快速安装及部署DRBD
查看>>
Java调试那点事
查看>>
COM-TEAM
查看>>
解决Sublime包管理package control 报错 There are no packages available for installation
查看>>
九个月搞定三轮融资,做 AI 导购的「智能一点」如何在巨头中突围?
查看>>
第四届中国国际大数据大会务实推进应用落地
查看>>
从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能
查看>>
看来Kubernetes将一统天下?Docker也无法幸免
查看>>
TalkingData:用好大数据,为企业转型赋能
查看>>
SD卡中FAT32文件格式快速入门(图文详细介绍)
查看>>
浅谈Android布局
查看>>
背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
查看>>
我的Java开发学习之旅------&gt;Base64的编码思想以及Java实现
查看>>
【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
查看>>
大数据玩家们对2013年趋势的预测
查看>>
python多线程之Event(事件)
查看>>