索引优化

不需要建索引的三种情况:

  1.表记录太少

  2.经常需要增删改查的表

  3.数据重复过多且分布平均的字段,建了效果不明显

 

JOIN语句优化

  左右连接相反加索引

  尽量减少join的循环总次数,永远用小的结果集去驱动大的结果集

  保证join字段都已经建好索引

  在无法保证join字段都建好索引的情况下且内存资源充足的情况下,不用太吝啬join buffer的设置

 

避免索引失效

  1.全值匹配

  2.最佳左前缀法则

  3.不在索引上做任何操作(计算,函数,类型转换),否则索引失效

  4.存储引擎不能使用索引中范围条件右边的列,当复合索引出现模糊查询时,当前字段右边的索引将失效(除like'a%'外,因为a为定值)

  5.尽量使用覆盖索引,减少select *

  6.mysql在使用!=或者<>的时候无法使用索引

  7.is null , is not null 也无法使用索引

  8.like时以通配符%开头时,后面索引失效,级别为range,用覆盖索引则不会失效,但只能用到部分

  9.字符串不加单引号索引失效

  10.少用or,索引会失效

 

ORDER BY

  复合索引的顺序和ORDER BY不一样时,出现filesort

 

 

 GROUP BY

  与ORDER BY 一致

  WHERE 高于 Having, 能用WHERE 尽量不用 HAVNG

posted @ 2019-10-17 20:51  小小分析猿  阅读(124)  评论(0编辑  收藏  举报