news 2026/5/30 13:45:19

MySQL的索引底层数据结构?(B+树)为什么用B+树不用B树或哈希?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL的索引底层数据结构?(B+树)为什么用B+树不用B树或哈希?

1. MySQL索引的底层数据结构:B+树

核心答案:MySQL的InnoDB存储引擎默认的索引数据结构是B+树。

什么是B+树?

B+树是B树的一种变体,它专为磁盘或其他直接存取的辅助存储设备而设计。它是一种平衡的多路搜索树。

B+树的关键特性(与B树的主要区别):
非叶子节点只存储键值(索引信息),不存储实际的数据行。这使得非叶子节点可以存储更多的键,从而让树的“分叉”(阶数)更多,树的高度更低。

所有叶子节点之间通过指针连接成一个有序双向链表。这是B+树一个极其重要的特性。

所有数据记录都存储在叶子节点中,并且叶子节点中的关键字是有序的。

2. 为什么用B+树而不用B树或哈希?

哈希:最多只有两个分支 所以当数据过多时只能增加树的层高 那样就会增加IO的次数
这正是问题的精髓所在,需要从数据库的使用场景出发来分析。数据库的数据和索引通常存储在磁盘上,而磁盘I/O(读写磁盘)是计算机操作中最慢的环节之一。因此,索引设计的核心目标是减少磁盘I/O次数。

原因一:为什么B+树比B树更优?
小结:B+树在范围查询、稳定性和空间局部性上完胜B树,更适合数据库的“读多写少”和“范围查询频繁”的场景。
原因二:为什么用B+树而不用哈希表?
小结:哈希索引虽然等值查询极快,但其无法支持范围查询和排序等核心数据库操作,导致其应用场景非常有限。因此,MySQL的Memory存储引擎支持哈希索引,但默认的InnoDB引擎只会在特定情况下(如自适应哈希索引)内部使用哈希来优化等值查询。

最终结论:

MySQL选择B+树作为索引的默认数据结构,是在充分考虑了磁盘I/O效率、数据库常见操作(尤其是范围查询)、以及稳定性之后的最佳权衡。它完美地契合了数据库的“读多写少”和“频繁范围查询”的业务特点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 3:06:57

Yolo-v5运行中thop安装与检测框问题解决

YOLOv5 实践避坑实录:thop 安装与检测框缺失的根源解析 在部署 YOLOv5 模型时,你有没有经历过这样的时刻? 明明代码跑通了,日志也输出了一堆张量信息,结果打开图像一看——干干净净,一个框都没有。再回头…

作者头像 李华
网站建设 2026/5/28 19:29:57

HarmonyOS 星闪快速实战

一、什么是星闪? 星闪(NearLink) 是华为研发的新一代短距离无线通信技术,可以理解为"华为版蓝牙"(仅限我们目前用的,有对标WiFi的版本),但比蓝牙更快、更稳、更省电。 星…

作者头像 李华
网站建设 2026/5/29 18:41:43

一文带你入门智能体Agent开发——核心知识与学习路线

你是否也曾面对复杂的AI Agent项目,却只能照着README文档傻傻使用?这篇文章将帮你彻底打破这一局面,轻松掌握AI Agent开发技能!从核心概念到实战框架,一文打尽!一、什么是Agent?狭义上的Agent&a…

作者头像 李华
网站建设 2026/5/28 20:13:42

Isaccgym-环境类

1) 定义(配置 环境类)- 配置类(如 GO2WRoughCfg) - 通过嵌套类定义 env、commands、terrain、init_state、control、asset、rewards 等参数。训练代码和环境构建器读取这些字段来决定 num_envs、obs/action 大小、URDF 路径、地形…

作者头像 李华
网站建设 2026/5/30 13:24:32

GPT-OSS-20B与Qwen3-14B九大维度全面对比

GPT-OSS-20B 与 Qwen3-14B:一场关于轻量化与本土化的深度对决 在边缘计算设备悄然接管智能终端、AI 推理从云端向本地迁移的今天,一个现实问题摆在开发者面前:我们是否真的需要动辄上百亿参数的“巨无霸”模型?还是说&#xff0c…

作者头像 李华
网站建设 2026/5/29 13:53:22

【C++进阶】手撕 STL 源码:用红黑树封装实现 Map 和 Set

关注我,学习c不迷路: 个人主页:爱装代码的小瓶子 专栏如下: c学习Linux学习 后续会更新更多有趣的小知识,关注我带你遨游知识世界 期待你的关注。 文章目录1. 改造红黑树:适应泛型1.1 模板参数的变化1.2 核心魔法&…

作者头像 李华