数据库—优化—聚簇索引和非聚簇索引、回表查询
1. 什么是聚簇索引什么是非聚簇索引 ?
聚集索引选取规则:
- 如果存在主键,主键索引就是聚集索引;
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引;
- 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引;
2. 举例:表中id和name对应的数据结构
3. 回表查询:先根据name值(Arm)走二级索引找到主键值(10),再根据主键值走聚簇索引找到整行数据
**面试官**: 什么是聚簇索引什么是非聚簇索引?
**候选人:**
- 聚簇索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键作为聚簇索引;
- 非聚簇索引值的是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自己定义的索引都是非聚簇索引;
**面试官:** 知道什么是回表查询嘛?
**候选人:**
其实跟刚才介绍的聚簇索引和非聚簇索引是有关系的,回表的意思就是通过二级索引找到对应的主键值;然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表;