mysql 索引优化案例-单表,双表,多表优化

本文详细介绍了SQL索引的优化技巧,包括复合索引的合理使用、单表和多表查询时索引的设计原则,以及如何避免索引失效的情况。通过实例讲解了如何根据SQL解析顺序调整索引顺序,确保查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建复合索引的时候不要跨列使用(where和order by 拼起来会产生跨列效果)

create table test(
a1 varchar(20),
a2 varchar(20),
a3 varchar(20),
a4 varchar(20)
)
alter table test add index index_a1_a2_a3_a4(a1,a2,a3,a4)
推荐写法:
select a1,a2,a3,a4 from test where a1=1 and a2=2 and a3=3 and a4=4;

总结:如果(a,b,c,d)复合索引和使用的顺序一致(且不跨列使用),则复合索引全部使用,如果部分一致,则部分使用

2、单表

1、添加索引
2、根据sql实际解析的顺序,调整索引的顺序
3、如果存在in 可能会使索引失效,可以将in的字段放在后面
解析顺序:
from  on  join  where group by  having  select distinct order by
如果改变索引需要将之间创建的索引删除
drop index 索引名 on 表名
总结:最佳做前缀,保持索引的定义和使用的顺序一致性;索引需要做逐步优化;
将in的范围查询 做到where条件的最后 防止失效

3、双表

left join
1、加索引
原则:小表驱动大表
给左表加索引

4、三张表优化

1、小表驱动大表
2、索引建立在需要查询的字段上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值