天天看点

Mysql优化学习7-为什么说InnoDB索引即数据

Mysql优化学习7-为什么说InnoDB索引即数据

##1.聚簇索引(Clustered Index)

聚簇索引之所以叫聚簇索引不叫主索引,因为它包含了索引和数据,所以叫clustered集合的index。

Mysql优化学习7-为什么说InnoDB索引即数据
Mysql优化学习7-为什么说InnoDB索引即数据

从上图可以更加清晰详细的看到innodb的B+树结构下的节点存储结构。

每一个节点都分为下限指针,页号,上限指针他们存储的是条件信息和指针,然后同层的节点之间还有指针相连接。而真实环境中的根节点可以存储成千上万的跟节点。

在B+树种范围查找,比如要查找大于0小于5的数据,那么首先就查到大于0的第一个数据,然后到了最后一层就可以使用线性查找的方式来获取了。

##2.辅助索引(Secondary Index)

Mysql优化学习7-为什么说InnoDB索引即数据

辅助索引存储数据的方式与聚簇索引的方式不一样,虽然都是B+树,但是数据是不一样的,在辅助索引的B+树种, 我们还是拿上图讲,辅助索引存储的数据与聚簇索引刚好相反,第一行key值存储的是A,B,C,D这样的数据,第二行value值存储的是数据的Id,也就是1,2,3,4这样的,条件也是类似于>=A >=C这样的,最底层的叶子结点可以连接数据的主键,然后再到聚簇索引中找到这个主键的数据。