数据库原理复习——索引和散列

为君一笑 提交于 2020-01-25 15:41:14

本章主要讲的是数据库的查询时候的问题。

索引分为稀疏索引和稠密索引,前者是不是所有的键都有,后者只有一部分。主索引和辅助索引的区别是,主索引是针对排序好的列,每个索引项对应一个存储块儿,辅助索引是费排序的稠密索引。主索引是稀疏索引,辅助索引是稠密索引。

顺序索引主要有三种,除了刚刚说的主索引和辅助索引之外,如果辅助索引每个对应有多个查找对象的话,我们还可以设置一个中间层,让中间层来判断。主索引只能有一个,辅助索引可以有很多个。

在顺序索引中,缺点就是效率不高,更改的代价更高。这时候我们可以采取一种B+树索引的结构。其中的结点分为根结点、非叶节点和叶节点。根节点中至少有两个指针除非整个树就一个结点;其他的结点都是前面大后面小,等于的在后面;叶节点的前面直接指向数据本身,最右边的结点指向下一个结点。这样的缺点主要是空间代价特别大,还会有大量的空间浪费。B+树的查询方式是从上到下,更新我们不用管。然后B+树它本身就是一种文件组织的形式(这里有点不明白)。

然后另外一块我们要了解散列是什么。散列其实是一种文件的组织方式,整个文件区被划分为一个个的桶,我们去找一个记录的时候先把这个记录的某个属性值放到哈希函数里面得到一个桶的物理地址,然后去这个桶里找都自己的块儿,这样的方式使得数据可以分散在磁盘上。然后如果大小不够的话还可以存放在溢出桶里。

然后就是一个散列索引的事情,散列索引顾名思义就是用HASH函数组织辅助索引。把辅助索引分成一个个的桶,然后在桶里去找实际存储的位置。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!