回表
回表
前提知识:InnoDB、B+树、索引、聚集索引(唯一索引)、非聚集索引(普通索引)
定义
顾名思义,再次回到表中。在利用普通索引查询时会再次扫表查询。
原因
索引的底层存储结构不同导致的
聚集索引
B+树的叶子节点中直接存储唯一索引和当前行所有数据;利用唯一索引查询时,只需扫表一次。
非聚集索引
B+树的叶子节点中存储普通索引和当前行数据的唯一索引;利用普通索引查询时,则需需扫表两次。
这就是回表,所以回表是一种不好的现象。
解决方法
解决:建立联合索引,利用索引覆盖,避免使用非聚集索引。
哪些场景可以利用索引覆盖来优化SQL?
全表count查询优化
列查询回表优化
分页查询