1.聚簇索引和非聚簇索引
聚簇索引(聚集索引):数据和索引放在一起,B+树的叶子节点存放了整行数据,有且只有一个。
【主键索引和唯一索引,主键唯一,存放的是主键对应的整行数据】
非聚簇索引(二次索引):数据和索引分开存放,B+树叶子节点保存对应的主键,可以有多个。
【普通索引,比如姓名列的索引,通过姓名查找到主键索引值,然后再通过主键索引值查找到对应的整行数据】
1.1 聚集索引的选择?
- 如果存在主键,主键索引就是聚集索引
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
- 如果不存在主键,也没有合适的唯一索引,则innodb会生成一个隐藏的rowid作为聚集索引
2 回表查询
通过二级索引找到对应的主键值,到聚集索引中找到整行数据,这个过程就叫做回表