参数
1️⃣show variables like 'slow_query_log';查询是否开启慢查询日志
【开启慢查询sql:set global slow_query_log = 1/on;】
【关闭慢查询sql:set global slow_query_log = 0/off;】
2️⃣show variables like 'log_queries_not_using_indexes';查询未使用索引是否开启记录慢查询日志
【开启记录未使用索引sql:set global log_queries_not_using_indexes=1/on】
【关闭记录未使用索引sql:set global log_queries_not_using_indexes=1/off】
3️⃣show variables like 'long_query_time';查询超过多少秒的记录到慢查询日志中
【设置超1秒就记录慢查询sql:set global long_query_time= 1;设置超1秒就记录】
工具
命令:mysqldumpslow。该命令可以帮助我们很好的去查看慢查询日志。
mysql默认安装时没有带mysqldumpslow,在bin目录我们能找到一个mysqldumpslow.pl的文件,但是并没有exe的可执行程序
优化慢查询
一般有3个思考方向
1.根据慢日志定位慢查询sql
2.使用explain等工具分析sql执行计划
3.修改sql或者尽量让sql走索引
explain



表格从上到下代表了sql查询性能从最优到最差,如果是type类型是all,说明sql语句需要优化。
注意:如果type = NULL,则表明个MySQL不用访问表或者索引,直接就能得到结果,
比如explain select sum(1+2);

一定要注意,Extra中出现Using filesort、Using temporary代表MySQL根本不能使用索引,效率会受到严重影响,应当尽可能的去优化。
出现Using filesort说明MySQL对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容,有索引就维护了B+树,数据本来就已经排好序了,这说明根本没有用到索引,而是数据读完之后再排序,可能在内存或者磁盘上排序。也有人将MySQL中无法利用索引的排序操作称为“文件排序”。
出现Using temporary表示MySQL在对查询结果排序时使用临时表,常见于order by和分组查询group by
