一、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的更多相关文章

  1. 【转载】 mysql explain用法

    转载链接:  mysql explain用法 官网说明:     http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数:  htt ...

  2. Mysql Explain 详解(转)

    原文:http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 一.语法 explain < table_name > ...

  3. mysql explain详解

    对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于 ...

  4. mysql explain用法和结果的含义

    重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...

  5. MYSQL EXPLAIN 很慢的原因

    今天同事在查看一个SQL的执行计划的时候,EXPLAIN语句跑了2分钟.SQL命令类似: SELECT * FROM (SELECT USERID,COUNT(*) FROM TBNAME GROUP ...

  6. [转]MySQL Explain详解

    在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有 ...

  7. mysql explain 命令讲解

    explian命令可以显示select语句的执行计划 explain的结果中每行对应select语句中的一个表,输出结果中的顺序是按照语句处理表的顺序. mysql使用嵌套循环来处理所有的join连接 ...

  8. mysql explain输出中type的取值说明

    原文: http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 这列很重要,显示了连接使用了哪种连接类别,有无使用索引. 从最好 ...

  9. mysql explain用法和结果的含义(转)

    重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...

随机推荐

  1. 错误信息:[ERR] Sorry, can't connect to node 10.211.55.8:7001

    错误信息: [root@centos-linux redis-cluster]# ./redis-trib.rb create --replicas 1 10.211.55.8:7001 10.211 ...

  2. P2303 [SDOI2012]Longge的问题 我傻QwQ

    莫比乌斯反演学傻了$QwQ$ 思路:推式子? 提交:2次 错因:又双叒叕没开$long\space long$ 题解: $\sum_{i=1}^n gcd(i,n)$ $=\sum_{d|n}d\su ...

  3. Luogu P2324 [SCOI2005]骑士精神 搜索

    刚开始写了个没迭代的...结果过了$qwq$ 然后迭个代..更快了.. #include<cstdio> #include<iostream> #define R regist ...

  4. find(expr|obj|ele)搜索所有与指定表达式匹配的元素。

    find(expr|obj|ele) 概述 搜索所有与指定表达式匹配的元素.这个函数是找出正在处理的元素的后代元素的好方法. 所有搜索都依靠jQuery表达式来完成.这个表达式可以使用CSS1-3的选 ...

  5. Ubuntu 蓝牙鼠标一段时间失效的问题

    问题: 我有一个小巧的蓝牙鼠标,但有一个问题. 当它不使用一段时间时,它会关闭. 好的我得按按钮把它打开. 但是我发现,在我在蓝牙小程序下单击"连接"之前,它不会再被Ubuntu识 ...

  6. When you want to succeed as bad as you wanna breathe, then you’ll be successful.

    上周末登了次山,回来就各种矫情犯懒.今天周四一周又要完蛋,我发现自己真的是对时间流逝无可奈何.然后中午看了把小码哥网站还有MJ博客什么的,各种首期班大爆照,心中羞愧无比.年纪大也不能放弃自己啊,要不人 ...

  7. 【零基础】为什么Facebook发币就不一样

    参考: https://baijiahao.baidu.com/s?id=1637182596912694597&wfr=spider&for=pc https://blog.csdn ...

  8. Linux设备驱动程序 之 read和write

    read和write原型 read和write方法完成的任务是相似的,亦即,拷贝数据到应用程序空间,或者反过来从应用程序空间拷贝数据:因此,它们的原型很相似,如下: ssize_t (*read) ( ...

  9. HDU2795线段树入门 简单查询和修改

    http://acm.hdu.edu.cn/showproblem.php?pid=2795 #include<iostream> using namespace std; ; int h ...

  10. PHP遍历目录下的文件夹和文件 以及遍历文件下内容

    1.遍历目录下的文件夹和文件: public function bianli1($dir) { $files = array(); if($head = opendir($dir)) { while( ...