MySQL

主键、唯一、聚簇、二级、覆盖索引,不是一种分法

学了一堆索引名词之后,我发现它们根本不在同一层:

角度分类
叶子上存什么聚簇索引:叶子放整行,一张表一棵,一般就是主键。二级索引:叶子放索引列 + 主键,要靠主键回表
值能不能重复主键(唯一且非空)、唯一索引、普通索引
由几列组成单列索引、联合索引(列的顺序就是排序顺序)
这次查询怎么用覆盖索引:要的列叶子上都有,不用回表

所以「唯一索引」和「二级索引」不冲突:有主键的表里,唯一索引就是一棵二级索引。「覆盖索引」也不是一种要单独建的索引,而是某次查询碰巧用得上的一种用法。

esc