联合索引 where 查询的不同情况

联合索引 where 查询的不同情况

暂时记录一下, 有时间回来更新 , 这里涉及到了 解释器的优化

select count(id) from user 
-- 查看索引
show index from user
-- 删除之前的索引
drop index idx_sex_pass on user

-- 创建联合索引     执行时间  42.493s  
create index `idx_sex_email_nickname` on user(sex,email,nickname)

-- 测试 条件查询 字段顺序 -0.024s  type ref
-- 索引生效
select username, `password` from user where sex = 'male' and email = 'jack1003@itcast.cn' and nickname = '1003'
--  索引生效,  数据量大, 全表扫描  const
-- 第一个字段生效, 后边两个没有用到
select username, `password` from user where sex = 'male' 
--   走索引  违背最左原则  6.229s
-- 中间的索引不生效, 左边和 右边的依然生效
select username, `password` from user where   nickname = '1003' and sex = 'male' and email = 'jack1003@itcast.cn'
-- 没有第一个字段, 不走索引  全表扫描  type All
select username, `password` from user where   email = 'jack1003@itcast.cn' and nickname = '1003'
-- type ref  索引没有完全生效 , 没有第一个字段, 后边两个索引生效
select username, `password` from user where sex = 'male' and  nickname = '1003'
-- type ref  索引没有完全生效 
select username, `password` from user where  email = 'jack1003@itcast.cn' and nickname = '1003' and sex = 'male' 

-- type range 
select username, `password` from user where  nickname >'1003' and sex = 'male' and email = 'jack1003@itcast.cn' 


select username, `password` from user where   nickname = '10080' and sex = 'male' and email = 'jack10080@itcast.cn'
-- 没有第一个字段 不走索引
select username, `password` from user where   nickname = '10080'
-- type ref  
select username, `password` from user where   nickname = '10080' and sex = 'male' 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值