MySQL索引的底层数据结构

本文介绍了MySQL中普通索引和组合索引的底层数据结构——B+树。在Innodb引擎中,普通索引的叶子节点存储数据,主键索引的叶子节点存储数据的主键;而MyISAM引擎索引与数据分开存储。组合索引则将多个key存于同一节点,叶子节点同样存储数据。
摘要由CSDN通过智能技术生成

MySQL索引的底层数据结构

普通索引

        普通索引底层就是B+树(B+树的详细规则可参考https://blog.csdn.net/qq_26222859/article/details/80631121),中间节点存储key,叶子节点存储数据(Innodb引擎,最底层存储的是数据MyISAM引擎,最底层存储的是数据所在地址,Innodb引擎的索引和数据是在一起的,MyISAM引擎的索引和数据是分开的,详情可以百度/谷歌 聚簇索引非聚簇索引)。补充一点,Innodb的主键索引,底层叶子节点是存储数据,其他普通索引,底层叶子节点存的是数据对应的主键。就是说,查询数据的时候,可能会走2遍树。

下图摘自 《高性能MySQL》(第三版)
Innodb普通索引底层结构示意图

组合索引

        组合索引底层也是B+树。网上关于组合索引底层数据结构的资料不是很多,查了一些资料,感觉有些博客写错了。下图摘自 《高性能MySQL(第三版)》,从下面的示意图可以看出,组合索引是 多个key存在一个节点内,底层叶子节点跟Innodb普通索引一样,存储的是数据。其他的细节跟普通索引基本一致。

Innodb组合索引底层数据结构示意图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值