文章目录
前言
体能状态先于精神状态,习惯先于决心,聚焦先于喜好。
汇总图
索引查询比对

Order by 过程比对

基于 B+Tree 的索引
MySql 中的InnoDB 存储引擎和MyISAM 存储引擎的索引都是基于B+Tree的。
MySql中的B-TREE 和 B+TREE
InnoDB 的主键索引
上一篇文章介绍到,InnoDB使用聚簇索引存储表数据,并且其聚簇索引即主键索引。
MySql中的聚簇索引——InnoDB 的数据存储方式
MyISAM 的主键索引
MyISAM 的主键索引是一个简单的 B+Tree索引,和InnoDB 主键索引相比,区别至少有以下三点:
1、MyISAM 索引存储的键不是完整的列值,而是压缩后的列值。InnoDB的索引是以完整的列值作为key的。
2、MyISAM的非叶子节点指向下一层节点,叶子节点指向行数据地址。InnoDB的非叶子节点指向下一层节点,但是叶子节点存储的是行的所有列数据。
3、InnoDB 支持事务,其主键索引的节点会存储和事务先关的信息。
附一个小图
如下所示,我们有一张表,有三个字段,该表主键索引如下,叶子节点存储的是行数据的地址

InnoDB 和 MyISAM 二级索引的区别
二级索引也叫辅助索引
由于InnoDB 的主键索引本身就是表本身,即存储了表的所有数据,所以InnoDB的二级索引的叶子节点指向的是主键索引中的主键。
而MyISAM的二级索引和主键索引在叶子节点上没有区别,都是指向数据中的行地址。
参考图
InnoDB的主键索引和二级索引
主键索引叶子节点存储行数据
二级索引叶子节点指向主键
- 主键索引

- 二级索引

MyISAM的主键索引和二级索引
主键索引和二级索引的叶子节点都指向行数据
MyISAM 中数据是连续存储的,和分片有关

本文聚焦于MySql中InnoDB和MyISAM存储引擎的索引。二者索引均基于B+Tree,InnoDB主键索引即聚簇索引,存储完整列值和事务信息,二级索引叶子节点指向主键;MyISAM主键索引是简单B+Tree,存储压缩列值,主键和二级索引叶子节点都指向行数据地址。
386

被折叠的 条评论
为什么被折叠?



