SQL Server索引:创建与优化指南
1. 理解索引结构
1.1 B - 树结构原理
在SQL Server中,索引采用B - 树结构,这种结构保证了每次搜索都会经过相同数量的索引层级和页面来定位所需数据。例如,当查找以某个字母开头的单词所在页面时,无论选择哪个字母,都只需扫描两个页面。
1.2 索引层级内部机制
索引的层级数量和每层的页面数量由简单的数学规则决定。SQL Server的数据页大小为8192字节,可存储最多8060字节的实际用户数据。
以在 char(60) 列上创建索引为例:
- 若表中只有100行数据,每行需要60字节存储,总共需要6000字节,这些数据可存于一个页面,此时该页面既是根页面也是叶页面。实际上,表中可存储134行数据,索引仍只需一个页面。
- 当添加第135行数据时,一个页面无法容纳所有数据,SQL Server会创建两个额外页面,形成一个有根页面和两个叶级页面的索引。根页面包含两行数据,分别对应两个叶级页面的初始值,此时查询定位表中任何行只需扫描两个页面。
- 随着数据行不断增加,在达到17957行之前,索引层级不会改变。当添加第17957行数据时,叶级需要新增一个页面,但根页面无法容纳135个条目,因此SQL Server会添加一个包含两个页面的中间层。
- 当表中数据达到2406105行时,SQL Server会再引入一个中间层。
不同列类型创建索引的情况有所不同。若在 int 列(需4字节存储)上创建索引,在添加到2016行之前,SQL Server只需读取一个页面来定
超级会员免费看
订阅专栏 解锁全文
804

被折叠的 条评论
为什么被折叠?



