Mysql InnoDB B+Tree索引

摘要

1,InnoDB索引类型

2,B+Tree索引

Mysql InnoDB 索引

1,InnoDB索引类型

InnoDB存储引擎支持 B+树索引,Hash索引,全文索引。其中B+Tree是InnoDB最常用的索引。
而InnoDB引擎支持Hash索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表创建Hash索引。不能人为干涉创建Hash索引。

2,B+Tree索引

B+Tree是一种数据结构,InnoDB的B+Tree索引就是根据此结构实现的。如果不了解B+Tree数据结构,可先了解 二分查找法和二叉树。不做赘述。
在InnoDB中 B+Tree索引具有高扇出性, 因此B+Tree的高度一般是2~4层。(也就是查找有索引的数据,最多查2~4次)
B+Tree索引分为 聚集索引和辅助索引,它们都是通过B+Tree数据结构实现的,主要区别是,子叶节点存放的是否是一整行的信息。

首先要知道InnoDB存储引擎是索引组织表(表中的数据按主键顺序存放)

2.1聚集索引
按每张表的主键(主键可以有多个字段)构造一颗B+Tree,同时子叶节点存放整张表的行记录数据。(每张表只能有一个聚集索引)

1.当你定义一个主键时,InnnodDB存储引擎则把它当做聚集索引

2.如果你没有定义一个主键,则InnoDB定位到第一个唯一索引,且该索引的所有列值均飞空的,则将其当做聚集索引。

3如果表没有主键或合适的唯一索引INNODB会产生一个隐藏的行ID值6字节的行ID聚集索引,
2.2辅助索引(非聚集索引)
其叶子节点并不包含行记录的全部数据,叶子结点除了包含 键值以外,
每个叶子结点中的索引行还包含了 一个书签,该书签用来告诉存储引擎可以在哪找到相应的数据行,
由于innodb引擎表是索引组织表,因此innodb存储引擎的辅助索引的 书签就是相应行数据的聚集索引键。(每张表可以有多个辅助索引)

你可能感兴趣的:(Mysql)