mysql --explain+slowlog
一、EXPALIN
在SQL语句之前加上EXPLAIN关键字就可以获取这条SQL语句执行的计划

那么返回的这些字段是什么呢?
我们先关心一下比较重要的几个字段:
1. select_type 查询类型
1)simple 简单查询,没有UNION和子查询
2)priamry 主查询,有UNION或子查询的最外层查询
3)union 联合查询,有UNION的第二个和以后的查询
4)subquery 子查询,有子查询的除FROM包含的子查询
5)derived 派生查询,FROM包含的子查询
6)dependent union, dependent subquery 受到外部表查询影响的union和subquery
2.type 查询方式
依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL
ps: 除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引
1)system 只有一行数据或者是空表,且引擎是myisam
2)const 常量 WHERE使用唯一索引(主键id,或者其他UNIQUE索引字段)搜索
3)eq_ref
4)ref 常见于辅助索引的等值查找
5)fulltext 全文索引检索
6)ref_or_null 与ref方法类似,只是增加了null值的比较
7)unique_subquery 用于where中的in形式子查询,子查询返回不重复值唯一值
8)index_subquery 用于where中的iin形式子查询,使用到了辅助索引或者in常数列表,子查询可能返回重复值
9)range 索引范围扫描,常见于使用>,<,is null,between ,in ,like等运算符的查询中
10)index_merge 使用了两个以上的索引,最后取交集或者并集
11)index 遍历索引树
12)ALL 全表数据扫描
3. extra 额外讯息
4. 其他
1)possible key 此次查询中可能选用的索引,一个或多个
2)key 查询真正使用到的索引
3)key_len 索引长度(用到的索引字段的长度相加,例如用到 id int(8) + age int(5) 索引长度为8+5+2=15,加2是固定额外要加的)
4)rows 估算的扫描行数
5)filtered 存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的百分比
二、mysql慢查询日志
1.找到mysql配置文件(一般在mysql安装目录下)
Windows为my.ini,Linux为my.cnf
[mysqld]
slow_query_log = ON
slow_query_log_file = '自定义路径'
long_query_time = 1
slow_query_log:是否开启慢查询日志
slow_query_log_file:慢查询日志的位置
long_query_time:慢查询的标准(秒)
2.重启mysql守护进程/服务,查看是否生效
SHOW VARIABLES LIKE '%slow_query%';
SHOW VARIABLES LIKE '%long_query%';


3.尝试慢查询
SELECT SLEEP(3);


三、Profile 会话级别的性能分析
1.只能在当前会话使用
SET profiling = 1;
2.随便输入几句SQL查询语句
SELECT * FROM house;
SELECT sleep(1);
SELECT sleep(3);
3. show profiles

4. show profile( 默认显示最近一次查询 select sleep(3) 详细性能报告)

5. show profile for query 2(查询Query_ID为2的查询 select sleep(1) 详细性能报告)

mysql --explain+slowlog的更多相关文章
- 【转载】 mysql explain用法
转载链接: mysql explain用法 官网说明: http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数: htt ...
- Mysql Explain 详解(转)
原文:http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 一.语法 explain < table_name > ...
- mysql explain详解
对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于 ...
- mysql explain用法和结果的含义
重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...
- MYSQL EXPLAIN 很慢的原因
今天同事在查看一个SQL的执行计划的时候,EXPLAIN语句跑了2分钟.SQL命令类似: SELECT * FROM (SELECT USERID,COUNT(*) FROM TBNAME GROUP ...
- [转]MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有 ...
- mysql explain 命令讲解
explian命令可以显示select语句的执行计划 explain的结果中每行对应select语句中的一个表,输出结果中的顺序是按照语句处理表的顺序. mysql使用嵌套循环来处理所有的join连接 ...
- mysql explain输出中type的取值说明
原文: http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 这列很重要,显示了连接使用了哪种连接类别,有无使用索引. 从最好 ...
- mysql explain用法和结果的含义(转)
重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...
随机推荐
- Huffman树、霍夫曼编码
Huffman树指的是带权路径长度WPL最小的二叉树 WPL=路径*权值 Huffman常用于压缩编码,正常传输ABCDEF这些字母需要3位二进制树来描述,但由于一篇文章中ABCDEF这些字母出现的概 ...
- App自动化-python基础
定义类:类变量.成员变量.局部变量:构造函数.类方法:实例化对象: # -*- coding: utf-8 -*- ''' Created on 2019-6-25 @author: adminstr ...
- Educational Codeforces Round 34 (Rated for Div. 2) B题【打怪模拟】
B. The Modcrab Vova is again playing some computer game, now an RPG. In the game Vova's character re ...
- springboot的application.yml配置详解
https://www.cnblogs.com/lqtbk/p/9843401.html https://blog.csdn.net/yelllowcong/article/details/79216 ...
- c/c++读取一行可以包含空格的字符串(getline,fgets用法)
1.char[]型 char buf[1000005]; cin.getline(buf,sizeof(buf)); 多行文件输入的情况: while(cin.getline(buf,sizeof(b ...
- 【java设计模式】-02工厂模式
工厂模式简述 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客 ...
- 【洛谷2053】 [SCOI2007]修车(费用流)
传送门 洛谷 Solution 考虑把每一个修车工人拆成\(n\)个点,那么考虑令\(id(i,j)\)为第\(i\)个工人倒数第\(j\)次修车. 然后就可以直接跑费用流了!!! 代码实现 /* m ...
- 原生javascript封装动画库
****转载自自己发表于牛人部落专栏的文章**** 一.前言 本文记录了自己利用原生javascript构建自己的动画库的过程,在不断改进的过程中,实现以下动画效果: 针对同一个dom元素上相继发生的 ...
- 从JMS到KafKa
从JMS到KafKa JMS (1)JMS概念 JMS(Java Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建.发 ...
- MySQL之MyISAM和InnoDB
一.区别 1.MySQL默认采用的是MyISAM. 2.MyISAM不支持事务和外键,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提 ...