当前位置:Gxlcms > 数据库问题 > SQL Server 的索引结构实例

SQL Server 的索引结构实例

时间:2021-07-01 10:21:17 帮助过:5人阅读

目前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 的索引结构实例

标签:创建表   test   记录   class   ons   str   int   img   cell   

人气教程排行