![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CN4MjN5cjM1M2M5IjM4UDMzYzX1AzM0kDM0IzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
##1.聚簇索引(Clustered Index)
聚簇索引之所以叫聚簇索引不叫主索引,因为它包含了索引和数据,所以叫clustered集合的index。
从上图可以更加清晰详细的看到innodb的B+树结构下的节点存储结构。
每一个节点都分为下限指针,页号,上限指针他们存储的是条件信息和指针,然后同层的节点之间还有指针相连接。而真实环境中的根节点可以存储成千上万的跟节点。
在B+树种范围查找,比如要查找大于0小于5的数据,那么首先就查到大于0的第一个数据,然后到了最后一层就可以使用线性查找的方式来获取了。
##2.辅助索引(Secondary Index)
辅助索引存储数据的方式与聚簇索引的方式不一样,虽然都是B+树,但是数据是不一样的,在辅助索引的B+树种, 我们还是拿上图讲,辅助索引存储的数据与聚簇索引刚好相反,第一行key值存储的是A,B,C,D这样的数据,第二行value值存储的是数据的Id,也就是1,2,3,4这样的,条件也是类似于>=A >=C这样的,最底层的叶子结点可以连接数据的主键,然后再到聚簇索引中找到这个主键的数据。