B+ 树和 B 树的区别
B+树的结构
B树的结构
B+树索引与Hash索引的区别
1、b树(balance tree),B+树是B树的改进版
2、B+树非叶子节点仅用于索引,不保存数据记录,跟记录有关的信息都放在叶子节点中。而 B 树中, 非叶子节点既保存索引,也保存数据记录。
3、由于B+树只有叶子节点存储数据,所有B+树能够记录更多的索引,这棵树更加“矮胖”,这样搜索效率更高,更稳定。
4、B+树所有数据都在叶子节点出现,叶子节点构成一个有序链表,而且叶子节点本身按照关键字的大小从小到大顺序链接(单向链表)。
5、对于范围查询来说,B+树只需要遍历叶子节点链表即可,而B树需要重复中序遍历去遍历数据。
6、B+树的随机查找、插入和删除过程基本与B树类似
1、**Hash索引不能进行范围查询,**而B+树可以。这是因为Hash索引指向的数据是无序的,而B+树的叶子节点是个有序的链表。
2、Hash索引不支持联合索引的最左侧原则(即联合索引的部分索引无法使用),而B+树可以。
对于联合索引来说,Hash索引在计算Hash值的时候是将索引键合并后再一起计算Hash值,所以不会针对每个索引单独计算Hash值。因此如果用到联合索引的一个或者几个索引时,联合索引无法被利用。
3、Hash索引不支持 ORDER BY 排序,因为Hash索引指向的数据是无序的,因此无法起到排序优化的作用,而B+树索引数据是有序的,可以起到对该字段ORDER BY 排序优化的作用。
同理,我们也无法用Hash索引进行模糊查询,而B+树使用LIKE进行模糊查询的时候,LIKE后面后模糊查询(比如%结尾)的话就可以起到优化作用。
4、InnoDB不支持哈希索引
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/promsing/article/details/126185878
内容来源于网络,如有侵权,请联系作者删除!