explain对我们优化sql语句是非常有帮助的。可以通过explain+sql语句的方式分析当前sql语句。

例子

EXPLAIN SELECT dt,method,url FROM app_log WHERE id=11789

table

显示这一行数据属于哪张表,若在查询中为select起了别名,则显示别名。

EXPLAIN SELECT dt,method,url FROM app_log AS temp WHERE id=11789

type

在表里查到结果所用的方式。包括(性能有差——>高): All | index | range | ref | eq_ref | const,system | null |

all:全表扫描,MySQL 从头到尾扫描整张表查找行。

EXPLAIN SELECT dt,method,url FROM app_log AS temp LIMIT 100

注意:这里虽然使用limit但并不能改变全表扫描。

index:按索引扫描表,虽然还是全表扫描,但优点是索引是有序的。

EXPLAIN SELECT id FROM app_log AS temp LIMIT 100

range:以范围的方式扫描索引。比较运算符,以及in的type都是range。

EXPLAIN SELECT * FROM app_log AS temp WHERE id>100 LIMIT 199

ref:非唯一性索引访问

EXPLAIN SELECT * FROM app_log AS temp WHERE dt='2015-01-02' LIMIT 199

eq_ref:使用唯一性索引查找(主键或唯一索引)

EXPLAIN SELECT * FROM app_log JOIN app_details_log USING(id)

先全表扫描了app_details_log表,然后在对app_log进行eq_ref查找。因为app_log的id字段是主键。如果此时删除app_log的id为主键,则都会进行全表扫描。

const:常量,在整个查询过程中这个表最多只会有一条匹配的行,比如主键 id=1 就肯定只有一行,只需读取一次表数据便能取得所需的结果,且表数据在分解执行计划时读取。

EXPLAIN SELECT * FROM app_log WHERE id=11790

注意:system 是 const 类型的特例,当表只有一行时就会出现 system 。

null:在优化的过程已经得到结果,不再需要访问表或索引。例如表中并不存在id=1000的记录。

EXPLAIN SELECT * FROM app_log WHERE id=1000

possible_keys

可能被用到的索引。

EXPLAIN SELECT * FROM app_log WHERE id>100 LIMIT 100 ;

Key

查询过程中实际用到的索引,例子如上图,实际用的索引列为主键列。

key_len

索引字段最大可能使用的长度。例如上图中,Key_len:4,因为主键是int类型,长度为4.

ref

指出对key列所选择的索引的查找方式,常见的有const,func,null,具体字段名。当key列为null,即不使用索引时,此值也为null.

rows

mysql估计需要扫描的行数,只是一个估算。

Extra

这个显示其他的一些信息,但对优化sql也非常的重要。

using Index:此查询使用了覆盖索引(Convering Index),即通过索引就能返回结果,无需访问表。弱没显示“Using Index”表示读取了表数据。

EXPLAIN SELECT id FROM app_log;

因为 id 为主键索引,索引中直接包含了 id 的值,所以无需访问表,直接查找索引就能返回结果。

using where:mysql从存储引擎收到行后再进行“后过滤(Post-filter)”。后过滤:先读取整行数据,再检查慈航是否符合where的条件,符合就留下,不符合便丢弃。检测是在读取行后进行的,所以叫后过滤。

EXPLAIN SELECT id FROM app_log WHERE id>100 LIMIT 100;

using temporary:使用到临时表,在使用临时表的时候,Extra为这个值。

using filesort:若查询所需的排序与使用的索引的排序一直,因为索引已排序,因此按索引的顺序读取结果返回,否则,在取到结果后,还需要按查询所需的顺序对结果进行排序,这时就会出现using filesort。

EXPLAIN SELECT id FROM app_log WHERE id>100 GROUP BY dt;

MySQL explain 例子_MySql]explain用法及实践相关推荐

  1. MySQL explain 例子_MySQL EXPLAIN结果集分析 - 附带大量案例

    EXPLAIN:查看SQL语句的执行计划 EXPLAIN命令可以帮助我们深入了解MySQL基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化 ...

  2. mysql exists例子_mysql exists用法

    在mysql中,有个关键字exists比较难理解,今天就来搞明白其含义和应用 exists的使用总是跟子查询关联起来,一种是不相关子查询,对于exists来说更常用的是相关子查询 不相关子查询:子查询 ...

  3. mysql useing查询_mysql explain语法详解--优化你的查询

    先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addr ...

  4. mysql explain结果_MySQL EXPLAIN用法和结果分析

    MySQL   EXPLAIN用法和结果分析 1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.分析你的查询语句或是表结 ...

  5. mysql explain语句_Mysql explain 语句详解

    explain 语句详解 explain 写在 select 前,如下 mysql> explain select * from user_info where id = 2\G ******* ...

  6. mysql 全盘扫描_mysql explain 正常,但是实际上是全盘扫描

    问题描述,由于最近快要到考试季节了,用户活跃量大幅度增加,虽然已升级rds数据库的配置:但是发现了另一个问题,iops大约在3%左右,而cpu缺在 30%以上:虽然都处于运行良好的状态:但是这个参数告 ...

  7. mysql limit 运算符_MYSQL LIMIT 用法

    小太阳 MySQL limit 应用的一些例子. 语法格式: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 解析:LIMI ...

  8. mysql牵引例子_MySQL学习06(事务和索引)

    事务 概述 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACI ...

  9. mysql concat例子_MYSQL中CONCAT详解

    concat()函数 1. 功能: 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 2. 语法 concat(str1, str2,...) 3. 例子 案例一: ...

最新文章

  1. LabVIEW实现应用程序停止或退出
  2. 序列建模:时间卷积网络取代RNN(An Empirical Evaluation of Generic Convolutional and Recurrent)论文 pdf
  3. 11g废弃的Hint - BYPASS_UJVC
  4. python导入本地文件-Python使用import导入本地脚本及导入模块的技巧总结
  5. 整理大型网站架构必知必会的几个服务器知识
  6. C++ OOP学习记录
  7. Zookeeper 入门
  8. mysql between and的用法的意思_从入门到入土:MySQL完整学习指南,包教包会!
  9. python时间重叠_python-检测重叠的日期重复规则
  10. eclipse dorado plugin
  11. 【实操手册】如何把一场直播录制下来?
  12. C# ToString()日期格式
  13. 【学习笔记】【OC语言】继承
  14. 一筐鸡蛋筐拿鸡蛋的问题
  15. 消费者原理分析-RocketMQ知识体系4
  16. Satwe楼板能用弹性模计算吗_SATWE软件计算结果分析
  17. 阿里巴巴Java开发规范手册(详尽版)——免费下载
  18. 国产电源管理芯片有哪些?
  19. lt18i android 2.3.4典藏版,索尼LT18i一键ROOT教程工具 2.3.4已亲测成功
  20. 使用Faiss来加速计算向量之间的相似度

热门文章

  1. 使用canvas制作刮刮卡效果(1)
  2. HTTP错误代码详解
  3. java 线程池扩容_java线程池自动扩容
  4. 台式计算机截图快捷键,电脑截图的快捷键是什么_屏幕截图快捷键_怎么截图快捷键-太平洋IT百科...
  5. OpenCV SIFT源码讲解——代码逻辑宏观窥探
  6. IBM成功制出石墨烯射频接收器 已通过文本信息收发测试
  7. 用微软自带工具制作U盘启动盘,完美安装原装纯净windows10系统
  8. Java多线程(Thread)
  9. 论文阅读:Understanding Doubly Stochastic Clustering
  10. 小白教程-JBoss的下载以及安装、部署