1. 查询效率低的sql语句
通过慢日志查询,通过processlist查看执行时间长的sql语句
2. explain分析执行计划
查询到效率低的sql语句后,可通过explain命令获取mysql如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的是顺序。
3.show profile分析sql
mysql从5.0.37版本开始增加了对show profiles和show profile语句的支持。show profiles能够在做sql优化时帮助我们了解时间耗费到哪里去了。
//通过hava_profiling参数,能够看到当前sql是否支持profile
select @@hava_profiling;
set profiling=1; 开启profiling开关
4. trace分析优化器执行计划
mysql5.6提供了对sql的跟踪trace,通过trace文件能进一步了解为什么优化器选择a计划,而不是b计划。
5索引优化
索引优化时最常用也是重要的手段之一,通过索引通常可以解决用户大多数mysql性能优化问题。
- 避免索引失效应用,全职匹配,索引字段顺序无关,mysql内部优化器会优化字段顺序
- 避免索引失效应用,最左前缀法则
- 避免索引失效应用,其他匹配原则
sql优化
大批量插入数据
- 优化insert
- 优化order by语句
order by后边的多个排序字段要求尽量排石方式相同,字段顺序尽量和组合索引字段顺序一致
- 优化子查询
- 优化limit查询
黑马学习整理