当前位置:网站首页>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不支持哈希索引
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦
边栏推荐
猜你喜欢
随机推荐
【网络迁移】Pytorch中的torch.no_grad对应MindSpore哪个方法
文件操作【c语言】
ZZULIOJ:1021: 三个整数的最大值
数据切片问题
TCP协议之《发送缓存控制tcp_notsent_lowat》
【mindspore】【Categorical】softmax数据放入Categorical类出现和不为1的错误
Day14/15/16:哈夫曼树、哈弗曼编码(压缩与解压缩)
UDP协议之《套接口阻塞选项UDP_CORK》
Jackson的ObjectMapper在项目中的主要运用
ES高亮显示语法
【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
移动端vw适配记录
转:不忧、不惧——成功领导者的自我成长和实现
TCP协议之《TSQ限值tcp_limit_output_bytes》
125. 耍杂技的牛
2022/8/9
最牛最全的 Postman 实现 API 自动化测试教程
原型和原型链
LeetCode 周赛笔记 —— 2022年8月 第一周
改版后的CSDN如何更换皮肤









