游乐游手机版
首页/科技数码/文章详情

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

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

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
上一篇2026年秋季发布:苹果首款折叠iPhone传闻与定价前瞻 下一篇94限定版创纪录表现可视为特别限量QX60动力储备如何展示真实力
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
泰坦军团战魂KG277VPLUS双模显示器27英寸4K165Hz/520Hz仅1888元
科技数码 · 2026-07-03

泰坦军团战魂KG277VPLUS双模显示器27英寸4K165Hz/520Hz仅1888元

泰坦军团“战魂KG277VPLUS”27英寸显示器发售,支持4K165Hz与FHD520Hz双模切换,定价1888元。采用FastIPS面板,97%DCI-P3色域,配备升降支架及双HDMI2 1和双DP1 4接口。

苹果调价影响消费需求 2026年全球笔电出货量或降13.6%
科技数码 · 2026-07-03

苹果调价影响消费需求 2026年全球笔电出货量或降13.6%

迈入2026年,DRAM与NAND闪存的供应持续紧张及价格不断攀升,正逐步传导至终端消费市场。可以预见,下半年市场环境将更加严峻。上半年多家PC厂商已陆续上调产品定价,最终连苹果也不得不跟进,宣布提升iPad、Mac及家居设备的价格,以应对存储成本的快速上涨。 TrendForce分析指出,苹果全面

苹果iPhone 18 Pro自研C2芯片或不支持5G毫米波
科技数码 · 2026-07-03

苹果iPhone 18 Pro自研C2芯片或不支持5G毫米波

苹果自研C2芯片仅支持Sub-6GHz,不支持5G毫米波。因此,美版iPhone18Pro继续采用高通基带方案以支持毫米波,而其他地区版本则搭载苹果自研C2芯片。这一差异将导致在毫米波覆盖的市场中,用户峰值速率可能显著低于美版用户。

纳睿雷达推出睿宸超精细化短时临近AI气象大模型
科技数码 · 2026-07-03

纳睿雷达推出睿宸超精细化短时临近AI气象大模型

纳睿雷达近日释放了一项重磅成果。2026年7月1日,公司正式对外发布了两款自主研发的全新产品:一款是“WDSPT0152型”S波段全极化多功能有源相控阵雷达,另一款则是名为“睿宸”的超精细化短时临近AI气象大模型。从产品战略来看,此次发布直指气象监测与灾害预警领域的技术制高点。 先来看这款S波段雷达

南航国际创新港一期交付 四大专业园区打造空天产业强磁场
科技数码 · 2026-07-03

南航国际创新港一期交付 四大专业园区打造空天产业强磁场

近日,南京航空航天大学与六合区深度合作的标杆项目——南航国际创新港一期正式交付投用。两个地块陆续启用,成功串联起高校科研能量、地方产业载体与市场创新主体,为南京打造全国领先的航空航天产业创新中心、助力江苏布局商业航天全产业链,提供了坚实的物理支撑。 该创新港一期位于六合区雄州街道,分为3号和4号两个