MySQL慢查询&执行计划
参考文章:
https://blog.csdn.net/tiantianw/article/details/53334566
http://www.cnblogs.com/luyucheng/p/6265594.html
网上开启慢查询:
在[my.ini]中添加如下信息:
[mysqld]
log-slow-queries="C:/ProgramFiles/MySQL/MySQL Server 5.5/log/mysql-slow.log"
long_query_time = 4
log-queries-not-using-indexes
解释:
log-slow-queries:代表MYSQL慢查询的日志存储目录,此目录文件一定要有写权限;
Windows下需要写绝对路径,如:log-slow-queries="C:/Program Files/MySQL/MySQL Server5.5/log/mysql-slow.log"
long_query_time: 最长执行时间 (查询的最长时间,超过了这个时间则记录到日志中) .
log-queries-not-using-indexes:没有使用到索引的查询也将被记录在日志中
配置好以后重新启动MYSQL服务.
个人尝试:
1.获取当前变量信息,命令是
show variables like 'slow_query%';
slow_query_log on即表示开启记录慢sql
slow_query_log_file文件位置
long_query_time总执行时间
2.更改配置信息
set global slow_query_log='ON'; //开启记录慢sql
set global slow_query_log_file='D:/php_dev/MySQL/MySQL Server 5.5/log/slow_query.log'; //win操作系统,这个参数需要绝对路径
set global long_query_time=1; //设置慢查询时间为1秒
3.如果有超出指定时间的sql,就会把sql相关信息写入
D:/php_dev/MySQL/MySQL Server 5.5/log/slow_query.log这个文件
4.文件格式如下:
# Time: 190429 16:42:25
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.062400 Lock_time: 0.000000 Rows_sent: 1003 Rows_examined: 1003
SET timestamp=1556527345;
SELECT * FROM TEACHING_SYSTEM_STUDENT;
慢SQL工具 -- mysql内置 -- mysqldumpslow
# 取出使用最多的10条慢查询 mysqldumpslow -s c -t 10 /var/run/mysqld/mysqld-slow.log # 取出查询时间最慢的3条慢查询 mysqldumpslow -s t -t 3 /var/run/mysqld/mysqld-slow.log # 得到按照时间排序的前10条里面含有左连接的查询语句 mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
慢SQL工具 -- pt-query-digest
执行计划:
直接命令执行
explain
select * from student;
字段key判断是否使用到了索引