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

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

前言

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

汇总图

索引查询比对

在这里插入图片描述

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 中数据是连续存储的,和分片有关

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值