表中存在多个索引问题? - 聚集索引,回表,覆盖索引

目录

主键索引树

name列 - 普通索引树

 age address - 组合索引树

索引 - 涉及的三个重要概念

聚集索引(也叫主键索引)

回表

覆盖索引


例如: 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.主键索引树

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祁_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值