数据库系统概念笔记——第十一章:索引与散列

Posted 叶卡捷琳堡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统概念笔记——第十一章:索引与散列相关的知识,希望对你有一定的参考价值。

第十一章:索引

11.1 基本概念

数据库系统中的索引和图书馆中的索引类似,可以节省查询的时间

两种基本的索引类型

  • 顺序索引:基于值得顺序排序
  • 散列索引:将值平均分布到若干散列桶中。一个值所属的散列桶是由一个函数决定的,该函数称为散列函数

我们主要介绍顺序索引,顺序索引页数数据库中最常用的索引,散列索引提一下,带过就行

11.2 顺序索引

几个概念

  1. 主索引(聚集索引):包含记录的文件按照某个搜索码指定的顺序排序,那么该搜索码对应的索引称为主索引(聚集索引)
  2. 辅助索引(非聚集索引):与顺序不同

注意:主索引的搜索码不一定是主码

这种在搜索码上由聚集索引的文件称为索引顺序文件

11.2.1 稠密索引和稀疏索引

稠密索引

在稠密索引中,文件中的每个搜索码值都有一个索引项。在稠密聚集索引中,索引项包括搜索码值以及指向具有该搜索码值的第一条数据的指针。

instructor的id属性的主索引
在这里插入图片描述
以dept_name为搜索码的instructor文件的稠密聚集索引
在这里插入图片描述
稀疏索引

在稀疏索引中,只为搜索码的某些值建立索引项。只有当关系按搜索码排列顺序存储时才可以使用稀疏索引

在这里插入图片描述
两种索引的比较

稀疏索引占用空间小,但查找时间比稠密索引慢一些

11.2.2 多级索引

理解即可
在这里插入图片描述

11.2.4 辅助索引

辅助索引必须是稠密索引,每个搜索码都有一个索引项,对文件中的每条记录都有一个指针
在这里插入图片描述
这张图中,80000工资的有两人,因此辅助索引中有两个桶

11.2.5 多码上的索引

之前的搜索码都只含有单个属性,一般来说一个搜索码可用有多个属性

一个包含多个属性的搜索码被称为复合搜索码

这个索引的结构和其它索引一样,唯一不同的地方是搜索码不是单个属性,而是一个属性列表

搜索码按照字典序排序

11.3 B+树索引文件

索引顺序文件组织最大的缺点在于,随着文件的增大,索引查找性能和数据顺序扫描性能都会下降。

B+树索引结构是在数据插入和删除的情况下仍能保持其执行效率的几种使用最广泛的索引结构之一。

B+树索引采用平衡树结构,树根到树叶的每条路径的长度相同

11.3.1 B+树的结构

关于B+树的具体结构,上学期数据结构已经学过了,这里不再赘述
在这里插入图片描述
一个B+树索引的示例
在这里插入图片描述
对于叶节点
在这里插入图片描述
B+树的查询

查询的流程在上学期数据结构课已经学过了,这里不再赘述
在这里插入图片描述
关于B+树的更新,插入,删除

上学期数据结构课学过,这一块不是重点,不再赘述

B+树上实现符合索引

如图
在这里插入图片描述
在这里插入图片描述
索引中有重复数据的情况

按照字典序进行排序
在这里插入图片描述

11.6 静态散列

关于散列的文件组织方式,我们只需要了解即可

散列索引的例子
在这里插入图片描述

11.10 SQL中的索引定义

创建索引

create index <index-name> on <relation-name>(<attribute-list>)

删除索引

drop index <index-name>

以上是关于数据库系统概念笔记——第十一章:索引与散列的主要内容,如果未能解决你的问题,请参考以下文章

算法导论笔记——第十~十一章 数据结构 散列

构建之法阅读笔记08-第十一章

《JAVA编程思想》学习笔记——第十一章 持有对象

Python笔记·第十一章—— 函数 装饰器

《构建之法》阅读笔记第十&十一章

第十一章读书笔记