4、mysql索引优化

本文详细介绍了MySQL数据库在使用索引时应注意的几个关键点:遵循最左前缀原则以有效利用联合索引;避免在索引列上进行计算或函数操作,以免索引失效;尽可能使用覆盖索引以减少回表操作;慎用LIKE操作,尤其是以通配符开头的查询;避免大范围条件查询,可拆分成小范围查询以提高效率。通过理解并实践这些规范,可以显著提升查询性能。
摘要由CSDN通过智能技术生成

1、最左前缀原则

        如果使用联合索引,需要遵守最左前缀原则,必须按联合索引的字段顺序查询列,某个列没有用到则会导致后面的列都无法用到索引
explain  select *from bus_user where grand_=1 and class_=11 and num_=111

explain  select *from bus_user where num_=111

 

 2、不在索引列上做任何操作(计算、函数、转换类型)

了解索引结构的就能清楚的知道,索引树存的是原始值,计算后索引数无法识别也无法保证有序

explain  select * from bus_user where CONCAT('test',name)='testaaa'

3、尽量使用覆盖索引

避免使用select * ,如果仅返回二级索引包含的字段,可以避免回表,提高效率

explain  select name  from bus_user where  name = '123'
explain  select * from bus_user where  name = '123'

 4、like一通配符开头会导致索引失效变成全表扫描

explain  select * from bus_user where  name like '%123';

5、避免使用大范围条件

mysql在处理is null,not null,!=,not in ,not exists的时候无法使用索引,会导致全表扫描。在处理<,>,in,between这些范围查询时,内部优化器会根据检索的比例,表数据的大小等多个因素评估是否使用索引

explain  select * from bus_user where  name != '123';

6、范围查询优化

大范围查询会因为mysql优化器的对检索比例和表数据量的大小将索引失效,可以将一个大范围分为几个小范围进行查询,就可能是索引生效

#一个大范围可能会索引失效
explain select * from bus_user where age >=1 and age <=2000;
#拆成两个小范围
explain select * from bus_userwhere age >=1 and age <=1000;
explain select * from bus_userwhere age >=1000 and age <=2000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值