当前位置:网站首页>B+树与B树的区别、Hash索引与B+树索引的区别
B+树与B树的区别、Hash索引与B+树索引的区别
2022-08-10 03:53:00 【小小张自由—>张有博】
目录
B+树和B树的区别
1、b树(balance tree),B+树是B树的改进版
2、B+树非叶子节点仅用于索引,不保存数据记录,跟记录有关的信息都放在叶子节点中。而 B 树中, 非叶子节点既保存索引,也保存数据记录。
3、由于B+树只有叶子节点存储数据,所有B+树能够记录更多的索引,这棵树更加“矮胖”,这样搜索效率更高,更稳定。
4、B+树所有数据都在叶子节点出现,叶子节点构成一个有序链表,而且叶子节点本身按照关键字的大小从小到大顺序链接(单向链表)。
5、对于范围查询来说,B+树只需要遍历叶子节点链表即可,而B树需要重复中序遍历去遍历数据。
6、B+树的随机查找、插入和删除过程基本与B树类似
B+树的结构
B树的结构
B+树索引与Hash索引的区别
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不支持哈希索引
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦
边栏推荐
猜你喜欢
随机推荐
Qt 线程常用同步方式
torch.nn.CrossEntropyLoss()对应的MindSpore算子是哪个?
GBase 8s迁移失败
一篇文章教你Pytest快速入门和基础讲解,一定要看
一种能让大型数据聚类快2000倍的方法,真不戳
itoa和aoti函数的自我实现
ZZULIOJ:1027: 判断水仙花数
goland里的异常处理
C语言原码,反码,补码与大小端
Flink学习15:Flink自定义数据源
mediaserver创建
ZZULIOJ:1021: 三个整数的最大值
7、Chrome浏览器在Citrix虚拟应用会话中没有声音
什么是Jmeter?Jmeter使用的原理步骤是什么?
Qt编写物联网管理平台50-超强跨平台
ZZULIOJ:1028: I love 闰年!
ES高亮显示语法
BFF避坑指南
学习总结week4_1json
请问mindspore支持l1范数归一化吗