MySQL索引的数据结构:MyISAM中的索引方案
1. B-Tree树
MyISAM使用B-Tree索引,MySQL官方同样是B+树,国内称为B树。
只不过MyISAM的B+树中的叶子节点存放的是数据记录的地址。
2. MyISAM索引的原理
我们知道InnoDB中索引即数据,也就是聚簇索引的那可B+树的叶子节点将所有数据都包含了。虽然MyISAM也是用树结构存储索引,但却是将索引和数据分开存放。
还记得之前的MyISAM引擎的文件结构吗表名.frm --- 表结构表名.MYI --- 存索引表名.MYD ---存数据
- MyISAM引擎将表中的数据按照记录的插入顺序单独存储在一个文件中,称数据文件(.MYD),这个文件并不划分若干个数据页,有多少记录塞多少记录,也没有顺序,所以无法使用二分查找法查找数据
- MyISAM引擎会将索引存放在另一个文件中,称为索引文件(.MYI),MyISAM会为表的主键单独创建一个索引,只不过索引的叶子节点存放的不是完整的用户记录,而是主键值+数据的地址组合。
3.MyISAM主键索引结构如下图所示:

4. 二级索引
MyISAM中只有主键索引和二级索引,主键索引和二级索引在结构上没有任何区别,区别在于主键索引不可以重复,而二级索引可以重复。
二级索引结构图如下图所示:
评论区