1.慢查询:
(1).查看慢查询的日志文件有没有打开:show variables like ‘slow_query_log’;
(2).因为默认是没有开启的所以一般我们需要手动的去开启:set global slow_query_log=on;
(3).查看慢查询的时间:show variables like ‘long_query_time’;
(4).explain查看分析SQL执行计划:explain select * from log
(5).通过explain分析具体是那一条sql的问题:explain 具体的sql语句
2.优化方式:
(1).学会使用explain关键字分析查询语句的执行计划
(2).在MySQL中,可以使用EXPLAIN关键字来分析查询语句的执行计划,以帮助优化查询性能。EXPLAIN语句返回一个描述查询执行计划的结果集,包括了查询的操作顺序、使用的索引、表之间的连接方式等信息。
(3).是否索引失效了
(4).是否进行了全表扫描
(5).是否有select * 这种字段
(6).表的结构是否存在问题
(7).是否存在联表查询表的数量过多出现笛卡尔积这种
3.sql优化:
(1).插入数据
insert : 批量插入、手动控制事务、主键顺序插入
大批量插入:load data local infile.
(2).主键优化:主键长度尽量短、顺序插入
推荐使用 :AUTO_INCREMENT
不推荐:UUID
(3).order by优化
using index : 直接通过索引返回数据,性能高
using filesort : 需要将返回的结果在排序缓冲区排序
(4).group by 优化 : 索引,多字段分组满足最左前缀法则
(5).limit 优化 :覆盖索引+子查询
(6).count 优化 : 性能:count(字段)<count(主键 id) <count(1)<count(*)
count(1)与count(*)相差不大。
(7).update 优化:尽量根据主键/索引字段进行数据更新