以下是针对Innodb B+树索引。
innodb是IOT(索引组织表),数据是按照主键排序的,其叶子节点存储的是行记录的全部信息。
辅助索引是相对于聚集索引而言的,也叫非聚集索引。辅助索引的叶子节点存储的不是行记录的全部信息,但是会存储一个书签,这个书签会告诉引擎去哪里找到对应的数据行。实际上,这个书签存的就是其聚集索引的主键。
使用辅助索引检索时,会通过叶节点找到聚集索引的键,然后通过聚集索引找到完整的行记录。如果辅助索引的树高度是m,而聚集索引的高度是n,那么找到最终记录,会进行m+n次io访问才能定位到最终的数据。
辅助索引存在离散读的问题。