一、索引的建立和使用规则
1:最左前缀匹配原则
mysql 会从左向右,匹配直到遇到范围查询(>,<,between,like)就停止匹配
比如建立(a,b,c,d)顺序的索引
使用这样的查询语句 a = 1 and b=2 and c>3 and d =4 ; d是用不到索引的
但如果建立(a,b,d,c)的索引则都可以用到 , a,b,d 的顺序可以调整
2: = 和 in 可以乱序 ,比如a =1 and b = 2 and c =3
建索引的顺序可以任意 : (a,b,c)或 (b,a,c)
3:使用区分度高(选择性高)来做索引
4:索引列不能参与计算
5:尽量使用联合索引,不用使用单独索引
二、执行计划
rows是核心标志,绝大部分rows小的语句执行一定很快。
慢查询优化基本步骤
0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高
2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)
3.order by limit 形式的sql语句让排序的表优先查
4.了解业务方使用场景
5.加索引时参照建索引的几大原则
6.观察结果,不符合预期继续从0分析