1.执行计划explain
从执行计划查看是否需要优化sql
2.关键字段
1.id – 表的执行顺序,id大的先执行,相同的时候从上往下执行;
2.type - 一般出现eq-ref 就已经可以了,因为再往上就是system和null,这两个是几乎不会出现的类型;如果是all的话基本上都需要优化;
3.param-keys – 可以用到的索引;
4.key – 使用的索引;
5.rows – 大致的查询行数;
6.extra – 是否用到覆盖索引;
3.根据慢查询查看消耗时间
一般20W条数据的查询能保证在0.3秒内已经可以了
4.介绍一下B+tree结构
1.b+tree结构是一棵完全平衡的树结构,每个数据都会在最底层出现;
2.如果用到索引的时候,会在树分支查询到,要是用不上索引,就会在最底层出现一个全文检索的查询,会导致查询的速度降到最低;
索引优化
1.数据类型的优化
一般会用比较合适,字节比较小的类型
2.索引优化
1.一般在where/order by后面的字段需要设置索引;
2.基数大的字段可以设置索引,比如手机号码(每个人的手机号码都不一样),而性别就不能设置索引(基数只有两个,索引会占用内存空间)
索引失效
- 用了!= 或者 <>或者or这些关系会导致索引失效;
- 索引字段在表达式里面(a+1=5);
注意:索引失效会导致全文查询,会极大降低sql的执行速度;