SQLServer2008基础教程(8)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020年11月23日
第4页
8.1 概述
在Microsoft SQL Server系统中,可管理的最小 空间是页。一个页是8KB字节的物理空间。插入 数据的时候,数据就按照插入的时间顺序被放置 在数据页上。
一般地,放置数据的顺序与数据本身的逻辑关系 之间没有任何联系。因此,从数据之间的逻辑关 系方面来讲,数据是乱七八糟堆放在一起的。数 据的这种堆放方式称为堆。当一个数据页上的数 据堆放满之后,数据就得堆放在另外一个数据页 上,称为页分解。
2020年11月23日
第12页
非聚集索引
非聚集索引与聚集索引具有相同的B树结构,但 是,在非聚集索引中,基础表的数据行不是按照 非聚集键的顺序排序和存储,且非聚集索引的叶 级是由索引页而不是由数据页组成。
非聚集索引既可以定义在表或视图的聚集索引上, 也可以定义在表或视图的堆上。非聚集索引中的 每一个索引行都是由非聚集键值和行定位符组成, 该行定位符指向聚集索引或堆中包含该键值的数 据行。
2020年11月23日
第5页
为什么要创建索引呢?
这是因为,创建索引可以大大提高系统的性能。 第一,创建唯一性索引,可以保证每一行数据的 唯一性。第二,可以大大加快数据的检索速度。 第三,可以加速表和表之间的连接,特别是在实 现数据的参考完整性方面特别有意义。第四,在 使用ORDER BY和GROUP BY子句进行数据检索 时,可以显著减少查询中分组和排序的时间。第 五,通过使用索引,可以在查询的过程中,使用 优化隐藏器,提高系统的性能。
2020年11月23日
第7页
8.2 索引的类型和特点
在Microsoft SQL Server 2008系统中,有两种 基本的索引类型:聚集索引和非聚集索引。除此 之外,还有唯一性索引、包含性列索引、索引视 图、全文索引、XML索引等。在这些索引类型中, 聚集索引和非聚集索引是数据库引擎中索引的基 本类型,是理解唯一性索引、包含性列索引、索 引视图的基础,本节主要研究这两种索引类型。 另外,为了更好地理解索引结构,有必要对堆结 构有所了解。最后,简单介绍一下系统访问数据 的方式。
……
堆
或 上一页 下一页
聚
数据行
……
集
索
引
第14页
其他类型的索引
除了聚集索引和非聚集索引之外, Microsoft SQL Server 2008系统还提供了 一些其他类型的索引或索引表现形式,这 些内容包括唯一性索引、包含性列索引、 索引视图、全文索引和XML索引。
2020年11月23日
第15页
2020年11月23日
第6页
不利之处
这是因为增加索引也有其不利的一面。第 一,创建索引和维护索引要耗费时间。第 二,索引需要占物理空间,除了数据表占 数据空间之外,每一个索引还要占一定的 物理空间,如果要建立聚集索引,需要的 空间就会更大。第三,对表中的数据进行 增加、删除和修改时,索引也要动态地维 护,这样就降低了数据的维护速度。
第8章 索引和查询优化
本章概述 本章要点 本章内容
2020年11月23日
第Βιβλιοθήκη Baidu页
本章概述
为了加快对表中数据的检索,数据库管理系统通 常使用索引技术。索引类似于图书的目录。目录 允许用户不必翻阅整本图书就能根据页数迅速找 到所需内容。在数据库中,索引也允许数据库应 用程序迅速找到表中特定的数据,而不必扫描整 个数据库。在图书中,目录是内容和相应页码的 列表清单。在数据库中,索引是表中数据和相应 存储位置的列表。
2020年11月23日
第9页
堆结构示意图
object_id index_id=0 first_iam_page
IAM
2020年11月23日
标头 数据行
标头 数据行
标头 数据行
第10页
聚集索引
聚集索引是一种数据表的物理顺序与索引 顺序相同的索引,非聚集索引则是一种数 据表的物理顺序与索引顺序不相同的索引。
聚集索引的叶级和非叶级构成了一个特殊 类型的B树结构。B树结构中的每一页称为 一个索引节点。索引的最低级节点是叶级 节点。在一个聚集索引中,某个表的数据 页是叶级,在叶级之上的索引页是非叶级。 在聚集索引中,页的顺序是有序的。
2020年11月23日
第11页
聚集索引的结构示意图
object_id
根节点
本章详细研究有关索引和查询优化的内容。
2020年11月23日
第2页
本章要点
索引的优点和缺点 堆的结构特点 聚集索引和非聚集索引的特点 索引的类型 使用CREATE INDEX语句创建索引的方式 索引统计信息的特点和获得方式 查询优化的方式
2020年11月23日
第3页
本章内容
8.1 概述 8.2 索引的类型和特点 8.3 创建索引 8.4 索引维护 8.5 查询优化 8.6 本章小结
访问数据的方式
一般地,访问数据库中数据时,可以采用 两种方法:表扫描和索引查找。
2020年11月23日
第16页
表扫描
表扫描是指系统将指针放在该表的表头数 据所在的数据页上,然后按照数据页的排 列顺序,一页一页地从前向后扫描该表数 据所占有的全部数据页,直至扫描完表中 的全部记录。在扫描时,如果找到符合查 询条件的记录,那么就将这条记录挑选出 来。最后,将全部挑选出来符合查询语句 条件的记录显示出来。
索引页
index_id = 1
root_page
上一页 下一页 索引行
中间级 键 值 +行 定 位 符
上一页 下一页 索引行
索引页
上一页 下一页 索引行
上一页 下一页 索引行
叶节点
……
上一页 下一页 数据行
上一页 下一页 数据行
上一页 下一页
上一页 下一页
数据行
……
数据行
上一页 下一页 数据行
数据页
2020年11月23日
第13页
非聚集索引的结构示意图
object_id
index_id > 1
root_page
根节点
上一页 下一页
索引行
非
索引页
聚
集
叶节点
索
键 值 +行 定 位 符 上 一 页 下 一 页
上一页 下一页
上一页 下一页
引
索引行
索引行
索引行
索引页
数据页
……
2020年11月23日
上一页 下一页 数据行
2020年11月23日
第8页
堆
堆是不含聚集索引的表,表中的数据没有 任何的顺序。
堆的信息记录在sys.partitions目录视图中。 每一个堆都可能有多个不同的分区,每一 个分区都有一个堆结构,每一个分区在 sys.partitions目录视图中都有一行,且 index_id=0。也就是说,每一个堆都可能 有多个堆结构。