MySQL 中的回表是什么?

MySQL 中的回表是什么?

回表(Back to Table) 指的是 查询使用了非聚簇索引(普通索引)时,先在索引树中找到主键值,再回到聚簇索引查找完整数据的过程

1️⃣ 为什么会发生回表?

InnoDB 存储引擎中:

  • 聚簇索引(Clustered Index) 的叶子节点直接存储完整的行数据,因此查询主键时不需要回表。
  • 非聚簇索引(Secondary Index) 叶子节点存储的是 主键值,查询时如果需要完整数据,就必须通过主键值再去 聚簇索引 查找,导致回表。

2️⃣ 如何优化回表?

  • 使用覆盖索引,避免回表。
  • 减少查询的字段数量,尽量让查询字段都在索引里。
  • 主键查询优于普通索引查询

3️⃣ 总结

查询方式是否回表原因
主键查询 (id)❌ 不需要聚簇索引直接存储完整行数据
非聚簇索引查询 (name)✅ 需要先通过 name 索引找到主键,再回表查完整数据
覆盖索引查询 (name, age)❌ 不需要查询的字段都在索引中,避免回表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值