数据库索引采用B+树不采用B树的原因

简介: B+树相较于B树,在数据存储、磁盘读写、查询效率及范围查询方面更具优势。数据仅存于叶子节点,便于高效遍历和区间查询;内部节点不含数据,提高缓存命中率;查询路径固定,效率稳定;特别适合数据库索引使用。

● B+树更便于遍历:由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。
● B+树的磁盘读写代价更低:B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
● B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
● B+树更适合基于范围的查询 :B树在提高了IO性能的同时并没有解决元素遍历的效率低下的问题,正是为了解决这个问题,B+树应用而生。B+树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。

目录
相关文章
|
5月前
|
存储
第7章 神奇的树
第7章 神奇的树
|
存储 数据库 索引
为什么索引底层用b+树不用b树
为什么索引底层用b+树不用b树
86 0
|
存储 数据库 索引
数据库索引采用B+树不采用B树的原因
磁盘块读写效率更高:B+树相比于B树,在磁盘块的读写上具有更好的性能。B+树内部的非叶子节点只存储键值信息,而不包含具体的数据记录,这使得每个磁盘块能够存储更多的键值对。同时,由于叶子节点间使用链表进行连接,可以通过顺序读取的方式快速扫描整个索引。因此,B+树在进行磁盘块的读写操作时,具有更高的效率。
111 0
|
6月前
|
存储 算法 Unix
简单介绍一些其他的树
简单介绍一些其他的树
|
6月前
|
存储 关系型数据库 数据库
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
|
6月前
|
存储 算法 Java
【数据结构】树结构(B树、23树、B+树)
【数据结构】树结构(B树、23树、B+树)
135 0
【数据结构】树结构(B树、23树、B+树)
|
存储 机器学习/深度学习 人工智能
23 树与树算法
23 树与树算法
74 0
|
存储 缓存 关系型数据库
B树与B+树
B树与B+树
53 0
B树与B+树
|
存储 关系型数据库 MySQL
为什么MySQL索引结构采用B+树?
一位6年经验的小伙伴去字节面试的时候被问到这样一个问题,为什么MySQL索引结构要采用B+树?这位小伙伴从来就没有思考过这个问题。只因为现在都这么卷,后面还特意查了很多资料,他也希望听听我的见解。
136 0
系统发育树初步剖析
1. 什么是系统发育树 2. 如何看系统发育树并确定哪些物种最相关
208 0