初识mysql索引下推

mysql5.6 索引下推 extra = using index condition

create table test1(
f_a varchar(255),
f_b varchar(255),
f_c int
)charset = utf8;
alter table test1
add f_d varchar(255) null;

create index idx_test1_acb
on test1(f_a, f_c, f_b);

建立索引

explain
select * from test1
where f_a = 'f'
and f_c >1000
and f_b = 'h';

在这里插入图片描述

ps

  • 索引下推是MySQL的新功能(难怪看的mysql高性能【MySQL5.5版】没有看到这个内容)
  • 先从(f_a, f_c, f_b)idx1中取出 f_a,f_c的索引数据,
  • 再根据前面拿到的索引数据再从idx中获取f_b的数据。
  • 整个过程是不用回表的。所以是能够命中索引。
  • 但是神奇的是 如果我只查询(f_a,f_c)这两列 命中的竟然是type=ref,可能是跟MySQL的版本有关,按道理应该是type = range
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值