回表是什么
回表是值在使用非聚簇索引(二级索引)进行查询时, 若索引中未包含查询所需的全部数据, 需要根据索引中的主键值回到聚簇索引(主键索引)中查找完整数据行的过程.
这一操作会额外增加磁盘IO, 降低查询性能.
形象的比喻
以去图书馆找一本书为例:
现在有两种方法:
通过书架的编号(主索引)直接查找
通过作者的名字查索引卡片(二级索引)
当我们采用第二种方法时:
比如查作者是"余华"的索引卡片, 发现他写的书在A12, B04, C31这三个书架
但是索引卡片只有书架号, 没告诉我们书在哪个位置
我们需要去总书架目录查询这三个书架的位置, 最后才能找到书
这里的"回总目录查看"就相当于数据库的"回表", 虽然先用作者名索引快速缩小了范围, 但是为了找到完整的书籍信息, 必须再查一次总目录