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次数、提高磁盘利用率和减少节点访问次数等方式来提高查询效率。

相关推荐
Hrain-AI7 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
净水深流8 小时前
中央厨房冷链技术实践:多温区改造、WMS落地与IoT温控架构
大数据·数据库·人工智能·冷库冷链
l1t8 小时前
测试DuckDB 2.1的match_recognize模式匹配语句
数据库·duckdb
IpdataCloud9 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
曹牧10 小时前
Java:SQL 注入漏洞
数据库
程序员JerrySUN10 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
oradh11 小时前
Oracle Undo问题总结(ORA-600 [4xxx] 系列错误)
数据库·oracle
达梦数据11 小时前
DMDRS辅助表生成规则与作用
数据库·oracle
‎ദ്ദിᵔ.˛.ᵔ₎11 小时前
MySQL 表约束
数据库·mysql
Doris__HE11 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化