news 2026/4/23 13:01:34

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/4/23 12:36:15

LobeChat能否对接Monday.com?可视化工作流智能管理

LobeChat 与 Monday.com 的融合:构建可视化工作流的智能交互入口 在现代企业中,项目管理工具早已不再是简单的“待办清单”。像 Monday.com 这样的平台,凭借其高度可视化的看板、灵活的自定义字段和强大的自动化能力,已成为团队协…

作者头像 李华
网站建设 2026/4/23 13:01:29

LobeChat + GPU算力租赁:低成本运行大模型的黄金组合

LobeChat GPU算力租赁:低成本运行大模型的黄金组合 在智能对话系统快速普及的今天,越来越多开发者和企业希望拥有自己的AI助手——不仅能处理复杂任务,还能保障数据隐私、控制成本。然而现实是,本地部署大模型动辄需要数万元的GP…

作者头像 李华
网站建设 2026/4/23 10:48:03

140亿参数Wan2.2-T2V-A14B本地部署全解析

Wan2.2-T2V-A14B 本地部署全解析:从模型特性到企业级落地 在影视制作周期被压缩至极限、广告内容需求呈指数级增长的今天,传统视频生产方式正面临前所未有的压力。一个30秒的产品短视频,过去需要策划、拍摄、剪辑团队协作数天完成&#xff1b…

作者头像 李华
网站建设 2026/4/23 10:47:11

☆ 异或和|倒数第二步

lc2505遍历数组累加前缀和,不断将当前数和前缀和与结果做或运算最终得到所有子序列和的或值算所有子序列和的或值,只需看每个二进制位是否能被“激活”:子序列和的任意二进制位为1,必然对应1.“单个元素”2.或“某个前缀和”的该位…

作者头像 李华
网站建设 2026/4/17 8:22:05

昇腾NPU部署GPT-OSS-20B MoE模型实践

昇腾NPU部署GPT-OSS-20B MoE模型实践:从环境配置到推理优化的完整指南 在当前大模型加速向边缘端下沉的趋势下,如何在有限算力资源上实现高质量、低延迟的语言生成,已成为开发者关注的核心命题。尤其是在国产化AI硬件生态逐步成熟的背景下&a…

作者头像 李华
网站建设 2026/4/23 12:18:42

NPM安装PM2守护进程管理TensorRT服务

使用PM2守护TensorRT推理服务的完整实践 在AI模型从实验室走向生产环境的过程中,一个常见的挑战是:如何在保证极致推理性能的同时,实现服务的高可用与易维护?尤其是在边缘计算或云端微服务架构中,哪怕一次短暂的服务中…

作者头像 李华