5.3、MySql 学习-MySql中InnoDB和MyISAM的主键索引和二级索引

文章目录

      • 前言
      • 基于 B+Tree 的索引
      • InnoDB 的主键索引
      • MyISAM 的主键索引
        • 附一个小图
      • InnoDB 和 MyISAM 二级索引的区别
        • 参考图
        • InnoDB的主键索引和二级索引
        • MyISAM的主键索引和二级索引

前言

体能状态先于精神状态,习惯先于决心,聚焦先于喜好。

基于 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 支持事务,其主键索引的节点会存储和事务先关的信息。

附一个小图

如下所示,我们有一张表,有三个字段,该表主键索引如下,叶子节点存储的是行数据的地址

5.3、MySql 学习-MySql中InnoDB和MyISAM的主键索引和二级索引_第1张图片

InnoDB 和 MyISAM 二级索引的区别

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

参考图

InnoDB的主键索引和二级索引

主键索引叶子节点存储行数据
二级索引叶子节点指向主键

  • 主键索引
    5.3、MySql 学习-MySql中InnoDB和MyISAM的主键索引和二级索引_第2张图片
  • 二级索引
    5.3、MySql 学习-MySql中InnoDB和MyISAM的主键索引和二级索引_第3张图片

MyISAM的主键索引和二级索引

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

5.3、MySql 学习-MySql中InnoDB和MyISAM的主键索引和二级索引_第4张图片

你可能感兴趣的:(Mysql,学习)