news 2026/6/10 15:25:32

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/6/10 12:49:17

基于YOLOv10的道路交通信号检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 本项目基于YOLOv10目标检测算法开发了一套高效的道路交通信号检测系统,专门用于识别21类不同的道路交通标志和信号。系统在1376张训练图像、488张验证图像和229张测试图像组成的数据集上进行了训练和评估,能够准确检测包括停车标志、…

作者头像 李华
网站建设 2026/6/10 13:00:04

python基于django的企业人力资源招聘管理系统_fsjuwx26

目录基于Django的企业人力资源招聘管理系统概述系统功能模块技术实现特点关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Django的企业人力资源招聘管理系统概述 该系统采用Pyt…

作者头像 李华