news 2026/2/5 18:22:34

MYSQL回表扫描

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MYSQL回表扫描

什么是回表扫描

先在二级索引中找到符合条件的行
然后根据二级索引中存储的主键值
回到聚簇索引(主键索引)中查找完整的数据行
这个过程就像查书的目录找到章节页码,再翻到对应页面看具体内容。
回表的触发机制
当使用二级索引查询时,如果需要获取的字段超出二级索引覆盖范围(即存在非索引列),就会触发回表:

  • 第一步:通过二级索引B+树查找,定位到满足条件的主键值
  • 第二步:使用这些主键值,再次查询聚簇索引B+树,获取完整的行记录
-- 示例表CREATETABLEuser(idINTPRIMARYKEY,-- 聚簇索引(存储整行数据)nameVARCHAR(50),ageINT,cityVARCHAR(50),INDEXidx_age_city(age,city)-- 二级索引);

聚簇索引

  • 一般是主键索引
  • 叶子节点存储完整的行数据
  • 物理上按主键顺序存储

二级索引

  • 如:idx_age_city (age, city)
  • 叶子节点存储:索引列 + 主键值
  • 不包含其他列的数据

回表扫描示例

-- 场景1:需要回表SELECT*FROMuserWHEREage>20;-- 1. 使用 idx_age_city 找到符合条件的记录-- 2. 取出每条记录的主键 id-- 3. 用 id 回聚簇索引取完整行数据-- 场景2:覆盖索引,无需回表SELECTid,age,cityFROMuserWHEREage>20;-- idx_age_city 包含了所有需要的列(age, city, id)-- 直接从索引返回数据,无需回表

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 19:38:29

从规模到智能:大模型架构演进全指南(值得收藏学习)

本文详细分析了2023年至2025年6月大型语言模型的架构演进历程,从GPT-4时代的规模扩张,到效率驱动的MoE架构和新型注意力机制,再到推理(Thinking)范式的兴起,最后展望具身智能与后Transformer架构。文章指出,现代AI架构…

作者头像 李华
网站建设 2026/2/5 3:41:34

lambda的变量捕获机制

https://blog.csdn.net/weixin_69059394/article/details/155944312?spm1001.2014.3001.5502 上述博客的进程中断中提到了lambda的变量捕获机制。 public class demo6 {public static boolean isFinishedfalse;public static void main(String[] args) throws InterruptedExc…

作者头像 李华