目前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 的索引结构实例的更多相关文章

  1. 公司内部培训SQL Server传统索引结构PPT分享

    公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...

  2. SQL Server 查询优化 索引的结构与分类

    一.索引的结构 关系型数据库中以二维表来表达关系模型,表中的数据以页的形式存储在磁盘上,在SQL SERVER中,数据页是磁盘上8k的连续空间,那么,一个表的所有数据页在磁盘上是如何组织的呢?分两种情 ...

  3. SQL SERVER大话存储结构(4)_复合索引与包含索引

              索引这块从存储结构来分,有2大类,聚集索引和非聚集索引,而非聚集索引在堆表或者在聚集索引表都会对其 键值有所影响,这块可以详细查看本系列第二篇文章:SQL SERVER大话存储结构 ...

  4. SQL SERVER大话存储结构(6)_数据库数据文件

            数据库文件有两大类:数据文件跟日志文件,每一个数据库至少各有一个数据文件或者日志文件,数据文件用来存储数据,日志文件用来存储数据库的事务修改情况,可用于恢复数据库使用.     这里分 ...

  5. 人人都是 DBA(VIII)SQL Server 页存储结构

    当在 SQL Server 数据库中创建一张表时,会在多张系统基础表中插入所创建表的信息,用于管理该表.通过目录视图 sys.tables, sys.columns, sys.indexes 可以查看 ...

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

    T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他   简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能 ...

  7. SQL Server 数据库索引

    原文:SQL Server 数据库索引 一.什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用[索引] 索引允许SQL Server在表中查找数据而不需要扫描整个表. 1.1.索引的好处: ...

  8. SQL SERVER大话存储结构(3)_数据行的行结构

            一行数据是如何来存储的呢?     变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢?     对表格进行增减列,修改长度,添加默认值等DDL SQL ...

  9. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他

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

随机推荐

  1. vs2010帮助文件安装完全攻略

    1.VS2010帮助文件不支持重新配置,这个时候打开C:\Program Files\Microsoft Help Viewer\1.0目录,找到“HelpLibManager.exe.config” ...

  2. flatpickr功能强大的日期时间选择器插件

    flatpickr日期时间选择器支持移动手机,提供多种内置的主题效果,并且提供对中文的支持.它的特点还有: 使用SVG作为界面的图标. 兼容jQuery. 支持对各种日期格式的解析. 轻量级,高性能, ...

  3. Lepus_天兔的安装

    一.安装平台 Centos 32位 二.依赖软件 依赖软件包:mysql.php.apache集成在xampp中,python,MySQLdb模块安装包在lepus安装包目录中 以下标红软件是必须安装 ...

  4. 深入理解Flink核心技术(转载)

    作者:李呈祥 Flink项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多的人关注Flink项目.本文将深入分析Flink一些关键的技术与特性,希望能够帮助读者 ...

  5. Spark2.0机器学习系列之4:Logistic回归及Binary分类(二分问题)结果评估

    参数设置 α: 梯度上升算法迭代时候权重更新公式中包含 α :  http://blog.csdn.net/lu597203933/article/details/38468303 为了更好理解 α和 ...

  6. Java基础知识陷阱(八)

    本文发表于本人博客. 这次我来说说关于&跟&&的区别,大家都知道&是位运算符,而&&是逻辑运算符,看下面代码: public static void m ...

  7. PHP的pm、pm.max_requests、memory_limit

    1.php-fpm.conf中的pm pm是来控制php-fpm的工作进程数到底是一次性产生固定不变(static)还是在运行过程中随着需要动态变化(dynamic).众所周知,工作 进程数与服务器性 ...

  8. EasyUI合并行

    扩展一下 EasyUI   下面湿扩展EasyUI 合并行的方法 $.extend($.fn.datagrid.methods, { autoMergeCells: function (jq, fie ...

  9. 解决wordcloud导出图片不清楚

    使用WordCloud生成词云图片 本文详细介绍参考自:https://www.jianshu.com/p/fdd0acccf1c5 wordcloud开源项目:https://github.com/ ...

  10. iClap助力移动互联网企业高效实现规范化管理

    移动互联网的迅速崛起,智能移动客户端深刻而全面地影响着人类生活与工作习惯.而企业办公已从原始的纸张办公,到固定PC办公,跨入到一个应用范围更广.效率更高的移动办公时代.由静生动,让企业办公更加人性化和 ...