018 通俗易懂解释MySQL的回表

学软件技术,读第一手资料,去官方网站:MySQL 5.7参考手册

也可以看看比较经典的书籍,如《高性能MySQL》等


讲到MySQL中的回表就不得不提主键索引和非主键索引。

1、对于下面这个表,ID是主键(主键索引,或称为聚簇索引),k字段上创建非主键索引(二级索引)

2、主键索引和非主键索引的数据结构示意图如下

其中R代表一整行的值。

从图中不难看出,主键索引和非主键索引的区别是:非主键索引的叶子节点存放的是主键的值,而主键索引的叶子节点存放的是整行数据,其中非主键索引也被称为二级索引,而主键索引也被称为聚簇索引

根据这两种结构我们来进行下查询,看看他们在查询上有什么区别。

1、如果查询语句是 select * from table where ID = 100,即主键查询的方式,则只需要搜索 ID 这棵 B+树。

2、如果查询语句是 select * from table where k = 1,即非主键的查询方式,则先搜索k索引树,得到ID=100,再到ID索引树搜索一次,这个过程也被称为回表


版权声明:本文为qq_32649581原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。