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 。

 

 
 

转载于:https://www.cnblogs.com/lenther2002/p/6797128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值