4.B树和B+树的区别?为什么MySQL选择B+树作为索引?

区别:

1.数据存储位置

B树每个节点都存储了索引和数据

B+树只有叶子节点存储数据,非叶子节点仅存储索引

2.叶子节点的链接

B+树的所有叶子节点通过指针连接成一个双向链表,可以高效地进行范围查询或者顺序遍历

B树则没有这样的连接关系,查询时需要通过递归访问,并且范围查询更复杂

3.插入和删除操作

B树需要考虑非叶子节点和叶子节点的分裂和合并

B+树由于非叶子节点不存储数据,仅起到索引的作用,插入和删除操作对内部节点影响较小

4.适用场景

B树适用于操作频繁的场景,因为它能在每个节点存储数据,操作可以直接在各个节点进行,相应速度较快

B+树适用于大量范围查询、顺序访问和高效存储的场景

为什么MySQL选择B+树作为索引?

B+树的所有值都存储在叶子节点,内部节点仅仅作为索引使用,可以高效地进行范围查询和顺序查询

B+树是平衡树,所有叶子节点都在同一层级,无论查询哪个数据,查找路径的长度都是相同的,时间复杂度O(log N),插入、删除也是如此

B+树的节点具有高度的扇出性,每个节点包含多个子节点,这使得它的高度保持的非常低,每次读入一个节点可以包含更多信息,减少磁盘I/O次数,提升效率

B+树不仅适用于单一列的索引,也可以用于复合索引

我目前还在学习阶段,文章中可能有错误和不足,欢迎大家斧正!

相关推荐
悦数图数据库几秒前
BOSS 直聘基于悦数图数据库构建智能根因定位平台的实践
数据库·人工智能
IT大白3 分钟前
5、Kafka面试相关问题
分布式·面试·kafka
亮子AI6 分钟前
【Node.js】为什么数据库连接总是中断?
数据库·node.js
DBA小马哥6 分钟前
时序数据库在物联网中的应用
数据库·物联网·时序数据库
maray7 分钟前
体验 Neon 产品
数据库·学习
亮子AI7 分钟前
【MySQL】node.js 如何批量更新数据?
数据库·mysql·node.js
xj75730653311 分钟前
精通django 第二章 视图和URL
数据库·django·sqlite
摇滚侠14 分钟前
两句话理解 ElasticSearch 搜索引擎数据库的作用
数据库·mysql·搜索引擎
BinaryBoss14 分钟前
Python mongodb批量修改数据库某个字段
数据库·python·mongodb
Yu_iChan20 分钟前
苍穹外卖Day09 地址簿模块
java·数据库·mybatis