企业级项目实战讲解!单列索引和联合索引

这个涉及到MySQL本身的查询优化器策略,当一个表有多条索引可走时,mysql根据查询语句的成本来选择走哪条索引;

有人说where查询是按照从左到右的顺序,所以筛选力度大的条件尽量放在前面。网上百度过,确实有这种说法,但我亲自测试过,MySQL执行优化器会对其进行优化,当不考虑索引时,where条件顺序对效率没有影响,真正有影响的是是否用到了索引!

五、联合索引本质


当创建**(a, b, c)联合索引时,相当于创建了(a)单列索引,(a, b)联合索引以及(a, b, c)联合索引,想要索引生效的话,只能使用者三种组合;当然,我们上面测试过,a, c组合也可以,但实际上只用到了a的索引,c并没有用到。

六、索引失效


1、like子查询,%放前面;

2、非空判断 is not null;or语句前后没有同时使用索引。当or左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效;

3、or语句(前后都有索引才行,SQL优化要避免写or语句);

4、数据类型出现隐式转化。如varchar不加单引号的话可能会自动转换为int型,使索引无效,产生全表扫描。

七、其它知识点


1、需要加索引的字段,要在where条件中

2、数据量少的字段不需要加索引,因为建索引有一定开销,如果数据量小则没有必要建索引,速

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值