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文件中。

相关推荐
用户072367066603 分钟前
日志脱敏:不改业务代码,单遍扫描完成替换
后端
lightning_bug6 分钟前
docker部署黑马笔记
后端·架构
威哥爱编程8 分钟前
【AI全栈12-10】Spring Boot 用多模态做商品图审核 / 发票识别
java·spring boot·后端
bruce5411010 分钟前
给 UniRAG RAG 配一个前端,为什么最后选了 Lobe UI
后端
泡海椒10 分钟前
JQuickExcel 批量导入:用 importDataInBatch 控制大文件消费边界
数据库·oracle
imDwAaY12 分钟前
用户态与内核态到底怎么切换?从系统调用到上下文切换
后端·操作系统
imDwAaY14 分钟前
进程、线程、协程有什么区别?从资源分配到调度,一篇理清
后端·操作系统
威哥爱编程17 分钟前
【AI全栈12-09】Spring Boot 用流式输出做打字机对话:点下去不再干等
java·spring boot·后端
李剑一19 分钟前
AI翻译都这么强了,为什么程序员还是躲不开英语?假如你想用上GPT6,我劝你还是早点背单词吧!
面试·产品·创业
码流子20 分钟前
事件告警延迟拆解:从摄像头到手机通知,延迟卡在哪六个环节
数据库·人工智能·物联网