Mysql - 回表
Mysql回表指的是在InnoDB存储引擎下,二级索引(非聚集索引)查询到的索引列,如果需要查找所有列的数据,则需要到主键索引(聚集索引)里面去取出数据。这个过程就称为回表。因为行的数据都是存在主键索引B+tree的叶子节点里面,二级索引的B+树叶子节点都是存放的索引列、主键。【在使用非聚簇索引查询数据时,根据主键id到聚簇索引上查询数据的过程称为回表】
例如:
有一张用户表 id(主键), username (二级索引),age
id是主键索引 username是二级索引,当我们通过二级索引查询返回记录时,例如:
select * from t where username = "bobo";
① 通过二级索引找到 bobo记录和主键id
② 在通过主键id去主键索引B+tree找到行记录