MySQL的回表

作者:zhangyunlong 发布时间: 2024-10-03 阅读量:1 评论数:0

回表是什么

  • 回表是值在使用非聚簇索引(二级索引)进行查询时, 若索引中未包含查询所需的全部数据, 需要根据索引中的主键值回到聚簇索引(主键索引)中查找完整数据行的过程.

  • 这一操作会额外增加磁盘IO, 降低查询性能.


形象的比喻

以去图书馆找一本书为例:

现在有两种方法:

  • 通过书架的编号(主索引)直接查找

  • 通过作者的名字查索引卡片(二级索引)

当我们采用第二种方法时:

  1. 比如查作者是"余华"的索引卡片, 发现他写的书在A12, B04, C31这三个书架

  2. 但是索引卡片只有书架号, 没告诉我们书在哪个位置

  3. 我们需要去总书架目录查询这三个书架的位置, 最后才能找到书

这里的"回总目录查看"就相当于数据库的"回表", 虽然先用作者名索引快速缩小了范围, 但是为了找到完整的书籍信息, 必须再查一次总目录

评论