首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
MyISAM与InnoDB索引差异详解:B+树的不同实现对比

MyISAM与InnoDB索引差异详解:B+树的不同实现对比

热心网友
30
转载
2025-12-03

InnoDB和MyISAM是如何利用B+树来实现这两类索引,它们之间又有什么差异呢?今天我们就来聊聊这个话题。

数据库索引主要分为主键索引(Primary Index)与普通索引(Secondary Index)。那么,InnoDB和MyISAM在利用B+树实现这两类索引时,具体采用了哪些不同的设计思路?这正是本文要探讨的核心内容。

一、MyISAM的索引机制

MyISAM存储引擎的索引与数据记录是分开存储的,这种结构被称为非聚集索引(UnClustered Index)。

在主键索引与普通索引的实现上,MyISAM并没有本质的区别:

数据行被存放在一个独立的连续存储区域中;主键索引的叶子节点存储的是主键值以及对应数据记录的指针;普通索引的叶子节点则存储索引列的值和对应记录的指针。

值得一提的是,MyISAM表可以不被定义主键。

主键索引和普通索引实际上是两棵独立的B+树。当通过索引列进行查询时,系统首先定位到B+树的叶子节点,再通过指针找到对应的数据记录。

举例来说明MyISAM的运作方式:

t(id PK, name KEY, sex, flag);

假设表中存在四条记录:

1, shenjian, m, A
3, zhangsan, m, A
5, lisi, m, A
9, wangwu, f, B

其B+树索引结构如上图所示:数据记录单独存储;id作为主键,形成一棵索引树,叶子节点直接指向数据记录;name作为普通索引,也有一棵独立的索引树,叶子节点同样指向数据记录。

二、InnoDB的索引设计

InnoDB的主键索引与数据记录是存储在一起的,这种设计被称为聚集索引(Clustered Index)。

它没有独立的数据行存储区域;主键索引的叶子节点直接存储主键及其对应的完整数据记录(而非指针)。

正因如此,InnoDB基于主键的查询效率非常高。

由于这一特性,InnoDB表必须包含聚集索引:如果表定义了主键,则该主键就是聚集索引;如果表未定义主键,则第一个非空唯一列会被用作聚集索引;否则,InnoDB会自动创建一个隐藏的row-id作为聚集索引。

需要注意的是,聚集索引只能有一个,因为数据行在物理磁盘上只能有一份聚集存储。

InnoDB的普通索引则可以有多个,其实现方式与聚集索引有所不同:普通索引的叶子节点存储的是对应的主键值(而不是数据记录的指针)。

对于InnoDB表的设计,这里有几个实用建议:

尽量避免使用过长的列作为主键(例如char(64)),因为所有普通索引都会存储主键值,可能导致普通索引体积过大;建议使用趋势递增的整型作为主键,由于数据行与索引存储在一起,这样能够减少插入记录时因索引分裂和数据移动带来的性能开销。

仍然使用上面的例子,只是存储引擎换为InnoDB:

t(id PK, name KEY, sex, flag);

表中的四条记录不变:

1, shenjian, m, A
3, zhangsan, m, A
5, lisi, m, A
9, wangwu, f, B

其B+树索引结构如上图所示:id作为主键,数据记录和主键索引树存储在一起;name作为普通索引,有一棵独立的索引树,但其叶子节点存储的是对应记录的主键id值。

例如,当执行查询:

select * from t where name=‘lisi’;

这个过程会先通过name辅助索引定位到B+树叶子节点,获取到id=5,再通过聚集索引定位到具体的行记录。

也就是说,这个查询实际上扫描了两遍索引树。

三、核心要点总结

MyISAM和InnoDB都使用B+树来实现索引,但设计思路截然不同:

MyISAM的索引与数据分开存储,其索引叶子节点存储的是指向数据的指针,主键索引与普通索引在结构上差异不大;InnoDB的聚集索引将数据行与索引统一存储,其聚集索引的叶子节点存储数据行本身,而普通索引叶子节点存储主键值;InnoDB表必须有且只有一个聚集索引;建议使用趋势递增的整数作为InnoDB的主键,而不宜使用过长的列作为主键。

了解其背后的实现原理,比单纯记住结论更为重要。

掌握设计思路往往比技术细节更具价值。

来源:https://www.51cto.com/article/831043.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

MySQL 崩溃恢复神器:innodb_force_recovery 参数详解,DBA 必备!
业界动态
MySQL 崩溃恢复神器:innodb_force_recovery 参数详解,DBA 必备!

当数据库无法启动:深入解析 innodb_force_recovery 的“急救”艺术 在 MySQL 的日常运维中,最让人“心跳加速”的场景之一,莫过于数据库突然无法启动,错误日志里赫然写着: InnoDB: Database was not shut down normally! InnoDB:

热心网友
04.16
MySQL主键与唯一索引约束的核心差异详解
科技数码
MySQL主键与唯一索引约束的核心差异详解

对于主键与唯一索引约束,执行insert和update时,会触发约束检查, InnoDB违反约束时,会回滚对应SQL,互联网大数据量高并发量业务,为了大家的身心健康,请使用InnoDB。 今天聊聊M

热心网友
01.28
面试官:什么是 Next-Key Lock?作用是什么?
科技数码
面试官:什么是 Next-Key Lock?作用是什么?

Next-Key Lock 是 InnoDB 引擎行锁加间隙锁的组合,它锁住的是一个前开后闭的区间,消除了 REPEATABLE READ 隔离级别下的幻读问题。 Next-Key Lock 是 I

热心网友
12.15
MySQL索引详解:MyISAM与InnoDB的B+树区别
科技数码
MySQL索引详解:MyISAM与InnoDB的B+树区别

MySQL 的 MyISAM 和 InnoDB 存储引擎使用的索引使用的都是 B+ 树,那有什么区别呢?今天来聊一聊这个话题。 MySQL 的 MyISAM 和 InnoDB存储引擎使用的索引使用的

热心网友
12.10
MyISAM与InnoDB索引差异详解:B+树的不同实现对比
科技数码
MyISAM与InnoDB索引差异详解:B+树的不同实现对比

InnoDB 和 MyISAM 是怎么利用 B+ 树来实现这两类索引,其又有什么差异呢?这是今天要聊的内容。 数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary I

热心网友
12.03

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

面壁智能开源全双工全模态模型MiniCPM-o 4.5详解
AI资讯
面壁智能开源全双工全模态模型MiniCPM-o 4.5详解

MiniCPM-o 4 5是什么 在探索更自然、更智能的人机交互道路上,我们始终在期待一个“全能型选手”的到来。如今,这个角色或许已经登场。面壁智能最新开源的MiniCPM-o 4 5,一个仅拥有90亿参数的全模态大模型,正致力于重新划定“智能对话”的边界。 它彻底颠覆了传统一问一答的“对讲机”式交

热心网友
05.23
2025欧易OKX官网正版APP下载入口及安全获取教程
web3.0
2025欧易OKX官网正版APP下载入口及安全获取教程

Binance币安 欧易OKX ️ Huobi火币️ 想在2025年安全获取欧易OKX的正版APP?其实秘诀就一个:认准官方网站,避开所有仿冒和可疑的下载渠道。要知道,欧易现已统一更名为欧易OKX,其核心业务始终围绕数字资产交易及相关服务展开。 确认官方网站地址 第一步,打开浏览器,手动输入欧易OK

热心网友
05.23
国产AI社交平台SecondMe:真人发帖与智能互动体验
AI资讯
国产AI社交平台SecondMe:真人发帖与智能互动体验

SecondMe Book是什么 在AI社交这一前沿赛道,一款国产平台正带来独特的解决方案。SecondMe Book,本质上是一个能够让你构建个人AI数字分身的创新平台。它允许用户创建一个能够代表真实自我风格与思维的AI数字身份,并让这个“第二自我”在一个专属的AI社交网络中自主运行——包括主动发

热心网友
05.23
阶跃星辰开源Step 3.5 Flash基座模型详解
AI资讯
阶跃星辰开源Step 3.5 Flash基座模型详解

在AI大模型技术快速发展的今天,如何在卓越性能与高效推理成本之间取得最佳平衡,已成为行业关注的核心焦点。近期,由阶跃星辰推出的开源模型Step 3 5 Flash引发了广泛热议。该模型专为智能体(AI Agent)应用场景深度优化,旨在顶尖能力与亲民部署成本之间,构建一个极具竞争力的技术支点。 简而

热心网友
05.23
美团开源LongCat大语言模型Flash Lite版本详解
AI资讯
美团开源LongCat大语言模型Flash Lite版本详解

LongCat-Flash-Lite是什么 在探索大语言模型性能与效率的最佳平衡点时,美团近期推出的LongCat-Flash-Lite提供了一个极具创新性的解决方案。作为新一代高效大语言模型,它凭借其突破性的架构设计,在人工智能领域获得了广泛关注。 简而言之,该模型创新性地融合了“混合专家系统(M

热心网友
05.23