MySQL:InnoDB 索引


#MySQL ➡️ 浏览模式


索引的底层实现

索引用来做什么?用于快速检索数据。

InnoDB的索引基于B+树。行锁是基于索引的。B+树是一种平衡查找树,在基于磁头的硬盘中查找性能很高。

在B+树中,非叶子节点充当的是索引的作用。所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

在 MySQL 中,索引有聚集索引和辅助索引之分:

名词 解释
聚集索引 按照一张表的主键构造一颗B+树,叶子节点存放的是整张表的行记录数据。
辅助索引 也叫非聚集索引。 叶节点除了包含键值以外,每个叶级别中的索引行中还包含了一个书签(bookmark),该书签就是相应行数据的聚集索引键。

如果一张表在创建时没设置主键怎么办?没关系,MySQL会帮忙创建一个我们看不到的主键。

另外,索引也可以划分为「唯一索引」和「非唯一索引」。


( 本文完 )