当前位置:网站首页>表中存在多个索引问题? - 聚集索引,回表,覆盖索引
表中存在多个索引问题? - 聚集索引,回表,覆盖索引
2022-08-10 12:09:00 【祁_z】
目录
例如: user表有 id name age address work 五个字段
id 是主键
name 是普通索引
age address 是组合索引
work 没有加任何索引
小知识: 表中的每个索引都会维护一个B+树, 只有主键索引树数据才是完整的(聚集索引)
主键索引树

name列 - 普通索引树

age address - 组合索引树

索引 - 涉及的三个重要概念
聚集索引(也叫主键索引)
聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。
非叶子节点 : 存放主键id、索引
叶子节点 : 存放行记录数据
回表
select * from user where name = 王亮
执行这个sql, 需要查询2课B+树, 首先根据name查询(name列的B+树)得到对应的主键id, 然后根据主键id查询(主键B+树)对应的行数据, - 这个过程称之为回表

覆盖索引
select id, name from user where name = 张三
执行这个sql, 首先查询name索引的B+树, 但是这个sql只返回id和name, 在第一棵树里边就可以拿到我们需要的所有数据, 这个时候就不需要再回表了,
这种情况就是覆盖索引, 正确情况下, 是推荐使用覆盖索引的, 可以减少回表次数.
select id, age,address from user where age = ? -- 覆盖索引 - 走的age address组合索引树
select id, name, age from user where name = ? -- 覆盖索引 - 走的name普通索引数
select work from user where name = ? -- 回表 - 1.name普通索引树 2.主键索引树
边栏推荐
猜你喜欢
随机推荐
What are the five common data types of Redis?What is the corresponding data storage space?Take you to learn from scratch
An enhanced dynamic packet buffer management. The core part of the paper
Threshold-based filtering buffer management scheme in a shared buffer packet switch core part of the paper
【iOS】面试整理
CodeForces - 628D (digital dp)
LT8911EXB MIPI CSI/DSI转EDP信号转换
爱可可AI前沿推介(8.10)
search--01
Mysql—— 内连接、左连接、右连接以及全连接查询
太香了!自从用了这款接口神器,我的团队效率提升了 60%!
Data Analysis of Time Series (5): Simple Prediction Method
面试美团被问到了Redis,搞懂这几个问题,让你轻松吊打面试官
10 款更先进的开源命令行工具
国外媒体宣发怎样做才可以把握重点
教育Codeforces轮41(额定Div。2)大肠Tufurama
啥?他一个人写了个价值100万的软件,却用来开源了!
CURRENT_TIMESTAMP(6) 函数是否存在问题?
神经网络学习-正则化
阿里架构师整理一份企业级SSM架构实战文档,让你熟悉底层原理
MySQL索引的B+树到底有多高?









