SQL Server 的索引结构实例
Posted 有梦就能实现
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 的索引结构实例相关的知识,希望对你有一定的参考价值。
目前SQL Server 的索引结构如下:
这个是聚集索引的存放形式:
非聚集索引的方式如下:
它们是以B+树的数据结构存放的。
相信大家都看过类似的图,但是没有直观的认识,下面举一个实际的例子来说明图的结构。
1
2
3
4
5
6
7
8
9
10
11
|
USE Test --1.创建表,指定主键(会自动创建聚集索引) CREATE TABLE Person ( Id int NOT NULL IDENTITY, Name varchar (10) NOT NULL , Sex varchar (2) NOT NULL , CONSTRAINT PK_Person PRIMARY KEY (Id) ); --2.创建非聚集索引 CREATE INDEX idx_Person_Sex ON Person(Sex); |
1
2
3
4
|
--3.插入1笔数据 Insert Person values ( \'P0\' , \'M\' ); --4.查看表有哪些页 DBCC ind ( Test, [dbo.Person], -1) |
1
2
3
4
|
--5. 打开3604监控 DBCC TraceON(3604,-1) --6.查看聚集索引叶子节点页的数据 DBCC PAGE (Test,1,174, 1); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
--7.插入1000条M和500条W记录 SET NOCOUNT ON ; GO DECLARE @i int ; SET @i = 1000; WHILE @i < 2000 BEGIN Insert Person values ( \'P\' + convert ( varchar (10),@i), \'M\' ); SET @i = @i + 1; END ; DECLARE @i int ; SET @i = 2000; WHILE @i < 2500 BEGIN Insert Person values ( \'P\' + convert ( varchar (10),@i), \'W\' ); SET @i = @i + 1; END ; GO --8.查看表有哪些页 DBCC ind ( Test, [dbo.Person], -1) |
1
2
|
--9.查看聚集索引页的数据 DBCC PAGE (Test,1,209, 3); |
1
2
|
--10.查看非聚集索引页的数据 DBCC PAGE (Test,1,189, 3); |
Index 的总结:
一个Index 可以有多个Page
Index 是以B+树结构存放的,其中分支节点的信息是存在一个Page中,而叶子节点存放在其他Page 。
以上是关于SQL Server 的索引结构实例的主要内容,如果未能解决你的问题,请参考以下文章
使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段
SQL Server索引内部结构:SQL Server索引的阶梯级别10