码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 的索引结构实例

时间:2017-11-12 21:42:43      阅读:262      评论:0      收藏:0      [点我收藏+]

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

目前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   

原文地址:http://www.cnblogs.com/firstdream/p/7822883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!