众所周知,索引是用来优化查询性能和降低修改性能的。
在讨论聚合和非聚合索引之前,必须先说下索引和数据(记录)的关系,下面大概是数据表的数据结构图,可能我说得不对,欢迎大佬指点
简单说明下这张图的意思:
这张图表示的是一个B+数的数据结构,最下面一层的学术语叫“叶子节点”,第一层叫根节点,非第一层和最后一层为子节点。子节点和根节点存储主键(聚合索引),非聚合索引和行记录存储在叶子节点。
说完数据结构,应该也明白了聚合索引和非聚合索引的区别了吧,简单粗暴:能直接通过key值获取到数据的就是聚合索引,否则就是非聚合索引。如果表有主键(基本都有吧),则表的主键即为聚合索引,如果表没有主键,则mysql内部指定一个作为key