回表,覆盖索引,最左匹配,索引下推

回表:

假设现为name列建立普通索引,此时最后面的节点存放的是主键。当我们现在用name做查询的时候,第一次会查找name列的B+树,根据name列的B+树的叶子节点取到主键,再根据主键去查主键的B+树,从中取出整行记录,这就叫回表。

覆盖索引:

select id from t_user;(此时就是覆盖索引)

因为叶子节点就存在id主键,不需要再从主键的B+树里获取数据,因此就没了回表的过程,回表的过程没了就叫索引覆盖。

(查询的字段值是对应的索引列)

最左匹配:

假设现有组合索引(name,age),

select * from t_user where name = ? and age = ?;(最左匹配)

select * from t_user where age = ?; (不会走索引)

索引下推:

假设现有组合索引(name,age),老版本mysql是先将等于name的值从存储引擎里取出来,在server层再过滤age。

高版本是在从存储引擎里获取数据的时候,取等于name的数据时同时过滤掉age,这就叫索引下推。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值