MYSQL:B树和B+树存储索引比较

MySQL使用B+树而不使用B树的主要原因是B+树在范围查询方面具有更好的性能。

B树是一种平衡多路搜索树,它的节点既可以存储数据,也可以存储索引。B树的节点一般包含多个关键字和对应的指针,这样可以减少磁盘I/O的次数。

而B+树是B树的一种变种,它与B树的主要区别在于:B+树的非叶子节点只存储索引,而数据都存储在叶子节点中,并且叶子节点之间通过指针进行连接。这种设计使得B+树具有以下优势:

  1. 更大的数据块访问能力:由于B+树的叶子节点只存储数据,数据是顺序存放的,并且通过链表进行连接,这样在范围查询时可以更快地获取到连续的数据块,从而减少磁盘I/O的次数。

  2. 更高的磁盘利用率:由于数据只存储在叶子节点中,非叶子节点只存储索引,这样可以减少非叶子节点所占用的空间,提高了磁盘的利用率。

  3. 更少的节点访问次数:由于数据只存储在叶子节点中,而非叶子节点只存储索引,查询时只需要在叶子节点上进行查找,而非叶子节点的查找只是为了定位到叶子节点,这样可以减少节点的访问次数,提高查询效率。

综上所述,MySQL使用B+树而不使用B树是为了在范围查询方面具有更好的性能,通过减少磁盘I/O次数、提高磁盘利用率和减少节点访问次数等方式来提高查询效率。

相关推荐
小辰记事本18 小时前
从零读懂RDMA硬件排障:读数、看码、查计数器
运维·网络·数据库
JZC_xiaozhong18 小时前
企业微信集成OA、ERP与第三方应用:从“数据孤岛”到“流程闭环”
大数据·数据库·企业微信·etl工程师·持续集成·企业数据安全·数据集成与应用集成
一 乐19 小时前
个人博客系统|基于Springboot的个人博客系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·个人博客系统
光泽雨19 小时前
SqlDataAdapter.Fill(dt) 和SqlDataReader + dt.Load()的差异
数据库
迷枫71219 小时前
达梦数据库安全管理与访问控制
数据库
潇湘秦19 小时前
OEM 13c Release 5 补丁升级记录
数据库·oracle
图特摩斯科技19 小时前
原生本体数据库AbutionGraph,世界模型/本体智能应用 底座
数据库·人工智能·知识图谱·本体论·palantir·ontology
潇湘秦19 小时前
Oracle 数据库SQL优化指南
数据库·sql·oracle
Irene199119 小时前
日期区间筛选:三种实现方式对比(推荐日期范围比较)
mysql
j7~19 小时前
【MYSQL】 内置函数--详解
数据库·mysql·字符串函数·内置函数·日期函数·数学函数