在Mysql InnoDB引擎中,主键默认是聚簇索引(即叶子节点会存储一整行数据)
而非聚簇索引的叶子结点存储的是主键的值
当sql命中非聚簇索引的时候,需要使用主键的值重新查询这行数据。这就是回表。
如何优化:
1.覆盖索引(Covering Index)将查询字段全部包含在非聚簇索引中(即避免使用SELECT *)
2.索引下推(ICP)在存储引擎层提前过滤无效主键值,减少回表次数
在Mysql InnoDB引擎中,主键默认是聚簇索引(即叶子节点会存储一整行数据)
而非聚簇索引的叶子结点存储的是主键的值
当sql命中非聚簇索引的时候,需要使用主键的值重新查询这行数据。这就是回表。
如何优化:
1.覆盖索引(Covering Index)将查询字段全部包含在非聚簇索引中(即避免使用SELECT *)
2.索引下推(ICP)在存储引擎层提前过滤无效主键值,减少回表次数