Mysql底层数据结构为什么选择B+树

索引底层采用什么数据结构,为什么使用B+树而不是其他数据结构:

(1)如果采用二叉树:使用递增字段作为索引时,二叉树会退化成链表,查找效率太低

(2)如果采用红黑树,虽然插入新元素的过程中会自我平衡,调整位置,但是红叉树终究还是二叉树,树的高度还是太高了,I/O操作太多,多路树B树和B+树具有更低的层高。

(3)如果采用哈希表:单次查询虽然哈希表确实快,但是范围查询,比如:select * from table1 where id

(4)

1.B树的非叶子节点和叶子节点之间没有重复,B+树的非叶子节点和叶子节点之间有重复,也就是B+树有冗余节点

2.B树的非叶子节点和叶子节点都既存储索引key,又存储数据data,B+树的非叶子节点只存储索引,不存储数据,叶子节点才是既存储索引,又存储数据

3.B树的叶子节点不会存储相邻节点在磁盘中的位置,B+树的叶子节点会存储相邻节点在磁盘中的位置,所以B+树支持范围查询

4.B树不用查到叶子节点就可能查到数据,B+树必须一路查到叶子节点才能查到数据

相关推荐
这周也會开心26 分钟前
Redis与MySQL回写中的数据类型存储设计
数据库·redis·mysql
计算机学姐28 分钟前
基于SpringBoot的民宿预定管理系统【三角色+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·mysql·信息可视化·intellij-idea·推荐算法
qq_336313931 小时前
javaweb-web基础(springboot入门)
java·开发语言·mysql
来来走走1 小时前
rocky linux 9.7安装mysql 8.4+
linux·数据库·mysql
怣502 小时前
MySQL多表连接完全指南:内连接与外连接超详细讲解
数据库·sql·mysql
专注VB编程开发20年2 小时前
python图片验证码识别selenium爬虫--超级鹰实现自动登录,滑块,点击
数据库·python·mysql
qinyia3 小时前
通过本地构建解决Cartographer编译中absl依赖缺失问题
linux·运维·服务器·mysql·ubuntu
霖霖总总3 小时前
[小技巧65]深入 InnoDB 页的逻辑存储结构:16KB 页的逻辑全景解析
数据库·mysql
楼兰胡杨3 小时前
浅析二叉树、B树、B+树和MySQL索引底层原理
mysql·数据结构与算法分析
darling3314 小时前
mysql 自动备份以及远程传输脚本,异地备份
android·数据库·mysql·adb