Mysql - 回表

Mysql回表指的是在InnoDB存储引擎下,二级索引(非聚集索引)查询到的索引列,如果需要查找所有列的数据,则需要到主键索引(聚集索引)里面去取出数据。这个过程就称为回表。因为行的数据都是存在主键索引B+tree的叶子节点里面,二级索引的B+树叶子节点都是存放的索引列、主键。【在使用非聚簇索引查询数据时,根据主键id到聚簇索引上查询数据的过程称为回表

例如:

有一张用户表 id(主键), username (二级索引),age

id是主键索引 username是二级索引,当我们通过二级索引查询返回记录时,例如:

select * from t where username = "bobo";

① 通过二级索引找到 bobo记录和主键id

② 在通过主键id去主键索引B+tree找到行记录

避免回表

1、查询条件使用聚集索引---避免回表查询

2、使用索引覆盖---避免回表查询【将单列索引升级为联合索引】

3、使用索引下推---减少回表次数【mysql 5.6 优化之后的功能】

posted @   李若盛开  阅读(456)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2022-09-13 FileCoin核心概念
2022-09-13 IPFS基本原理
2022-09-13 区块链入门知识
点击右上角即可分享
微信分享提示