`

索引使用规则

 
阅读更多

一、索引的建立和使用规则

 

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_CACHE
1.where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高
2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)
3.order by limit 形式的sql语句让排序的表优先查
4.了解业务方使用场景
5.加索引时参照建索引的几大原则

6.观察结果,不符合预期继续从0分析 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics