news 2026/4/15 16:26:11

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/4/11 18:59:10

掌握数据可视化:从基础到实战的完整指南

前言:数据可视化是数据分析师的核心技能之一,也是将复杂数据转化为商业价值的关键桥梁。本文基于Matplotlib、Seaborn、Plotly等主流工具,从核心概念到实战案例,再到设计原则,系统梳理数据可视化的学习路径。所有代码均…

作者头像 李华
网站建设 2026/4/15 3:22:19

Flutter环境搭建与项目创建详解

Flutter环境搭建与项目创建详解:从零开始构建跨平台应用 引言 在移动应用开发领域,跨平台解决方案已成为提升开发效率、降低维护成本的关键选择。Google推出的Flutter框架凭借其卓越的性能表现、统一的开发体验和丰富的UI组件,正在迅速改变…

作者头像 李华
网站建设 2026/4/13 23:36:19

基于YOLOv10的超市商品检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 本项目基于YOLOv10目标检测算法开发了一套针对超市商品的智能识别系统,旨在实现超市环境中多种商品的自动化识别与分类。系统能够准确识别295种不同的超市商品,包括饮料、零食、调味品、罐头食品、乳制品等多种类别。项目使用包含10…

作者头像 李华