MyISAM主键索引树和二级索引树

专栏持续更新中:MySQL详解

MyISAM:数据和索引没有放在一块,叫做 非聚集索引,不可能回表

InnoDB:数据和索引存放在一块,叫聚集索引 ,会涉及回表

此时假设一个场景:uid是主键,有主键索引树,name有索引,创建二级索引树

当前场景下的主键索引树如下,B+树非叶子节点上只有索引值,叶子节点上有索引值和数据地址

MyISAM索引树原理图如下:

当前场景下的二级索引树如下:

InnoDB二级索引树叶子节点上是主键值uid,而MyISAM存的则是数据的地址

当前场景下,主键索引树和二级索引树两者之间的联系:

在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复,MyISAM二级索引树结构图如下:

当前场景下,若使用MyISAM存储引擎查找数据,以name作为索引,到二级索引树上查找结果(构造索引树的过程也涉及磁盘I/O),如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

MyISAM存储引擎,B+树叶子节点存储关键字和数据地址,也就是说索引关键字和数据没有在一起存放,体现在磁盘上,表的数据存放在*.MYD文件中,表的索引存放在*.MYI文件中。

相关推荐
xrl20128 分钟前
ruoyi-vue2集成flowable6.7.2后端篇
数据库·ruoyi·flowable·工作流集成
不思念一个荒废的名字9 分钟前
【黑马JavaWeb+AI知识梳理】Web后端开发04-登录认证
java·后端
java1234_小锋18 分钟前
Redis到底支不支持事务啊?
java·数据库·redis
平凡运维之路1 小时前
Linux入侵挖矿处理记录
后端
王中阳Go1 小时前
15 Go Eino AI应用开发实战 | 性能优化
后端·面试·go
云和恩墨1 小时前
告别 “事后救火”:7 大前置动作规避 80% 数据库故障
数据库·oracle
shoubepatien1 小时前
JAVA -- 07
java·后端·intellij-idea
王中阳Go1 小时前
09 Go Eino AI应用开发实战 | Hertz Web 框架搭建
人工智能·后端·go
STLearner1 小时前
VLDB 2025 | 时间序列(Time Series)论文总结(预测,异常检测,压缩,自动化等)
数据库·人工智能·深度学习·神经网络·机器学习·数据挖掘·时序数据库
1 小时前
TIDB——TIKV——raft
数据库·分布式·tidb