分类 | 含义 | 特点 |
---|---|---|
聚集索引(ClusteredIndex ) | 数据存储和索引放到一块,索引结构的叶子节点保存了行数据 | 必须有,而且只有一个 |
二级(辅助)索引(SecondaryIndex) | 将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键 | 可以存在多个 |
1.1. 聚集索引选取步骤
- 如果存在主键,主键索引就是聚集索引
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
- 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引
1.2. 聚集索引和二级索引结构介绍
聚集索引和二级索引的具体结构如下:
- 聚集索引的叶子节点下挂的是这一行的数据,聚集索引就是基于主键创建的索引
- 二级索引的叶子节点下挂的是该字段值对应的主键值,除了主键索引以外的其他索引,称为非聚集索引,也叫做二级索引
1.3. 回表
回表实际上与聚簇索引和非聚簇索引存在关系的,回表的意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表
执行如下的SQL语句
select * from tb_user where name='王五'
查找过程如下:
1、由于是根据name字段进行查询,所以先根据name=’王五’到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 ‘王五’ 对应的主键值 19
2、由于查询返回的数据是*,所以此时,还需要根据主键值19,到聚集索引中查找19对应的记录,最终找到19对应的行row。
3、最终拿到这一行的数据,直接返回即可
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END