MySQL 回表是什么?怎么避免?
回表 = 通过二级索引找到主键后,再到聚簇索引(主键 B+ 树)取整行数据的过程(两次 B+ 树查找)。触发:查询列包含二级索引中没有的列。避免方式:① 覆盖索引(查询列都进索引);② 用主键直接查询(走聚簇索引无需回表);③ 联合索引设计覆盖高频查询。代价:回表是随机 IO(主键值不连续),性能开销明显。优化器会在回表成本高时放弃二级索引(选择全表扫描或主键索引),EXPLAIN 的 Extra 列显示 Using index(覆盖)时无回表。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。