聚集索引和二级索引区别

分类含义特点
聚集索引(ClusteredIndex )数据存储和索引放到一块,索引结构的叶子节点保存了行数据必须有,而且只有一个
二级(辅助)索引(SecondaryIndex)将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键可以存在多个

1.1. 聚集索引选取步骤

  • 如果存在主键,主键索引就是聚集索引
  • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
  • 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引

1.2. 聚集索引和二级索引结构介绍

聚集索引和二级索引的具体结构如下:

图片[1]-聚集索引和二级索引区别-不念博客
  • 聚集索引的叶子节点下挂的是这一行的数据,聚集索引就是基于主键创建的索引
  • 二级索引的叶子节点下挂的是该字段值对应的主键值,除了主键索引以外的其他索引,称为非聚集索引,也叫做二级索引

1.3. 回表

回表实际上与聚簇索引和非聚簇索引存在关系的,回表的意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表

执行如下的SQL语句

select * from tb_user where name='王五'

查找过程如下:

1、由于是根据name字段进行查询,所以先根据name=’王五’到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 ‘王五’ 对应的主键值 19

2、由于查询返回的数据是*,所以此时,还需要根据主键值19,到聚集索引中查找19对应的记录,最终找到19对应的行row。

3、最终拿到这一行的数据,直接返回即可

    © 版权声明
    THE END