索引失效原因

1.合理使用like模糊查询。
Like查询时:‘%str’索引失效,全表扫描,而‘str%’索引不失效:
关键词: % orderno %,由于orderno前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%。
可以使用全文索引解决。

2.索引在where条件or和in生效的情况。
or两侧的都有索引时,索引生效;否则索引失效;
where子句and相连的条件中,有一个条件是带索引的,索引生效;
where子句即使and中有的条件是使用了in 索引仍然有效。
in造成索引失效,只有一个参数不会,
在这里插入图片描述
在这里插入图片描述
但是多个,没有命中索引。possible_keys :显示可能应用在这张表中的索引,一个或多个。
在这里插入图片描述
在这里插入图片描述
3.避免在where子句中对字段进行is null判断。

4.避免在where子句中对字段进行表达式操作。

在这里插入图片描述
5.避免隐式类型转换。

6.对于联合索引来说,要遵守最左前缀法则。
最左原则:
假设组合索引为:a,b,c的话;那么当SQL中对应有:a或a,b或a,b,c的时候,可称为完全满足最左原则;当SQL中查询条件对应只有a,c的时候,可称为部分满足最左原则;当SQL中没有a的时候,可称为不满足最左原则。
注:MySQL5.7开始,会自动优化,如:会把c,b,a优化为a,b,c使之完全遵循最左原则;会把c,a优化为a,c使之部分遵循最左原则。即:SQL语句中的对应条件的先后顺序无关。

在表中建立索引,优先考虑where、group by使用到的字段。

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值