三、查找需要优化语句
1、慢查询日志
是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。
方式一、临时启动慢查询记录日志
mysqld.exe --slow-query-log
注意:先把mysql关闭后,再执行以上指令启动。
通过慢查询日志定位执行效率较低的SQL语句。慢查询日志记录了所有执行时间超过long_query_time所设置的SQL语句。
- 在默认情况下,慢查询日志是存储到data目录下面的。根据配置文件里面的配置,找到data的存储路径。

- 可以通过命令查看慢查询日志的时间
show variables like 'long_query_time';

修改慢查询日志时间:
-- 改为0.5sset long_query_time=0.5;

- 测试查询
-- benchmark(count,expr)函数可以测试执行count次expr操作需要的时间。select benchmark(100000000,90000000*4);
查看慢查询日志

- 一般情况下,一个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位
开启profile机制:
set profiling = 1;
执行需要分析的sql语句(自动记录该sql的时间)

查看记录sql语句的执行时间:
show profiles;

注意:不需要分析时,最好将其关闭
set profiling=0;
