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

相关推荐
廿一夏6 小时前
MySql存储引擎与索引
数据库·sql·mysql
Mahir086 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
绝知此事8 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
lzhdim8 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室8 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)8 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU9 小时前
Spring IoC&DI
java·数据库·spring
IT_陈寒10 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
Muscleheng10 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
kyriewen11 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试