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

SQL Server 的索引结构实例相关推荐

  1. SQL SERVER大话存储结构(2)

    阅读目录(Content) 1 行记录如何存储 1.1 堆表 1.2 聚集索引表格 2 非聚集索引结构 3 非聚集索引键值内容 3.1 堆表上的非聚集索引 3.2 聚集索引表(唯一)的非聚集索引 3. ...

  2. SQL Server 聚集索引 clustered index 非聚集索引Nonclustered Indexes键查找查找Key Lookup执行计划过程详解

    SQL Server 聚集索引非聚集索引键查找过程详解 索引的相关术语 1 堆(Heap)是一种没有指定排序的数据结构,通俗的理解堆就像是按照顺序排放的杂物.在数据库里也即是对应没有聚集索引. 2 聚 ...

  3. 理解SQL Server中索引的概念,原理以及其他

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

  4. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他(看了两次了,转了)

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

  5. sql server 群集_设计有效SQL Server群集索引

    sql server 群集 In the previous articles of this series (see bottom for a full index), we described, i ...

  6. 理解SQL Server中索引的概念,原理

    理解SQL Server中索引的概念,原理 摘自:http://51even.iteye.com/blog/1490412 简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索 ...

  7. [转]SQL Server 2008存储结构之GAM、SGAM

    [转]SQL Server 2008存储结构之GAM.SGAM [IT168专稿]谈到GAM和SGAM,我们不得不从数据库的页和区说起.一个数据库由用户定义的空间构成,这些空间用来永久存储用户对象,例 ...

  8. SQL Server创建索引

    什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...

  9. Oracle和sql server中复制表结构和表数据的sql语句

    在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...

最新文章

  1. windows进程生产者消费者代码c语言,生产者消费者问题---C语言实现
  2. 设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点
  3. 状态目标bfs+哈希表 + 三杯水
  4. php获取外部URL,使用PHP从外部API / URL获取信息
  5. CA7 ROLL B 选项
  6. Android RadioButton 语言切换问题
  7. 〔总结〕容易遗忘的JS知识点整理
  8. 魔方优化大师 v5.15 中文绿色版
  9. 费马小定理的两个证明
  10. Windows10 重装系统小白教程
  11. 微信小程序面试题总结
  12. 浅浅的记录一下seo搜索引擎优化
  13. 图片鼠标移入图片改变颜色、显示另外一张图片(2种方式)
  14. 电脑中毒了老是自动安装软件怎么办
  15. B-树详细分析及B树B-树B+树B*树概念
  16. 【报告分享】汽车产业变革的浪潮之巅-中国智能驾驶行业研究报告-艾瑞咨询(附下载)
  17. python实现离散傅里叶变换
  18. 华为MateBook X Pro 2022和2021区别 哪个好
  19. 收发一体超声波测距离传感器模块_Arduino传感器篇
  20. 数据集VOC/CIFAR10/CATDOG

热门文章

  1. redis 删除key的命令_面试官问:Redis变慢了,你会怎么排查?
  2. 计算机原理与编程设计,最优化计算机原理与算法程序设计
  3. Python字符串isdecimal()
  4. Python ord(),chr()函数
  5. ios plist_iOS属性列表(plist)示例
  6. Akka与设备组一起工作《twelve》译
  7. 大企业中,Java面试官最爱问的问题集锦
  8. C++的基础知识有哪些?
  9. 数独动态解题演示小网站 - 基于Vue/pixi.js/Flask
  10. Jenkins部署java项目实例