三、查找需要优化语句
1、慢查询日志
是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。
方式一、临时启动慢查询记录日志
(1){mysql程序所在的目录}>bin/
mysqld.exe --safe-mode --slow-query-log
注意:先把mysql关闭后,再执行以上指令启动。
进入cmd开始启动;
>bin/mysqld.exe --safe-mode --slow-query-log
通过慢查询日志定位执行效率较低的SQL语句。慢查询日志记录了所有执行时间超过long_query_time所设置的SQL语句。
(2)在默认情况下,慢查询日志是存储到data目录下面的。根据配置文件里面的配置,找到data的存储路径。
(3)可以通过命令查看慢查询日志的时间
show variables like 'long_query_time';
修改慢查询日志时间:set long_query_time=0.5;
(4)测试查询:
查看慢查询日志
benchmark(count,expr)函数可以测试执行count次expr操作需要的时间。
select benchmark(10000,90000000*4);
(5)一般情况下,一个sql语句执行比较慢,原因是没有索引
添加索引之前,索引文件大小如下;
没有添加索引之前查询时间如下:
添加索引之后:
alter table emp add index(empno)
添加索引后,索引文件变大。
添加索引之后需要的时间;
结论:创建完索引后,索引文件会变大,添加索引会明显的提高查询速度。
方式二:通过修改配置文件,添加如下语句
log-slow-queries="d:/slow-log"
慢查询日志文件存储的路径,当前是把慢查询日志存储到d:盘下面,文件名为slow-log
long_query_time=1
指定慢查询的时间,默认是10秒,我们自定义成1或0.05秒,也就是说当一个sql语句的执行速度超过1秒时,会把该语句添加到慢查询日志里面,
通过配置文件是永远的开启慢查询日志
2、精确记录查询时间
使用mysql提供profile机制完成。
profile记录每次执行的sql语句的具体时间,精确时间到小数点8位
(1)开启profile机制:
set profiling = 1;
执行需要分析的sql语句(自动记录该sql的时间) (2)查看记录sql语句的执行时间:
show profiles;
注意:不需要分析时,最好将其关闭。
set profiling=0;