Mysql Explain

主要重要的字段有上面红色方框圈出来的那几个。

  • type: 连接类型,一个好的SQL语句至少要达到range级别,杜绝出现all级别。
  • key: 使用到的索引名,如果没有选择索引,值是NULL。可以采取强制索引方式。
  • key_len: 索引长度。
  • rows: 扫描行数,该值是一个预估值。
  • extra: 详细说明,注意常见不太友好的值,如下:Using filesort, Using temporary.

Type

可能的值如下

  • ALL: 最坏的情况,全表扫描。
  • index: 和全表扫描一样。只是扫描表的时候按照索引次序进行而不是行。主要优点就是避免了排序, 但是开销仍然非常大。如在Extra列看到Using index,说明正在使用覆盖索引,只扫描索引的数据,它比按索引次序全表扫描的开销要小很多
  • range: 范围扫描,一个有限制的索引扫描。key 列显示使用了哪个索引。当使用=、 <>、>、>=、<、<=、IS NULL、<=>、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可以使用 range
  • ref:  一种索引访问,它返回所有匹配某个单个值的行。此类索引访问只有当使用非唯一性索引或唯一性索引非唯一性前缀时才会发生。这个类型跟eq_ref不同的是,它用在关联操作只使用了索引的最左前缀,或者索引不是UNIQUE和PRIMARY KEY。ref可以用于使用=或<=>操作符的带索引的列。
  • eq_ref: 最多只返回一条符合条件的记录。使用唯一性索引或主键查找时会发生 (高效)
  • const: 当确定最多只会有一行匹配的时候,MySQL优化器会在查询前读取它而且只读取一次,因此非常快。当主键放入where子句时,mysql把这个查询转为一个常量(高效)
  • system: 这是const连接类型的一种特例,表仅有一行满足条件。
  • NULL: 意味说mysql能在优化阶段分解查询语句,在执行阶段甚至用不到访问表或索引(高效)

Key

key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

Key_len

key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好 。

Rows

rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。

Explain

可能的值如下

  • Using filesort: MySQL有两种方式可以生成有序的结果,通过排序操作或者使用索引,当Extra中出现了Using filesort 说明MySQL使用了后者,但注意虽然叫filesort但并不是说明就是用了文件来进行排序,只要可能排序都是在内存里完成的。大部分情况下利用索引排序更快,所以一般这时也要考虑优化查询了。使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。
  • Using temporary: 用临时表保存中间结果,常用于GROUP BY 和 ORDER BY操作中,一般看到它说明查询需要优化了,就算避免不了临时表的使用也要尽量避免硬盘临时表的使用。
  • Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行, 就不再搜索了。
  • Using index: 说明查询是覆盖了索引的,不需要读取数据文件,从索引树(索引文件)中即可获得信息。如果同时出现using where,表明索引被用来执行索引键值的查找,没有using where,表明索引用来读取数据而非执行查找动作。这是MySQL服务层完成的,但无需再回表查询记录。
  • Using index condition: 这是MySQL 5.6出来的新特性,叫做“索引条件推送”。简单说一点就是MySQL原来在索引上是不能执行如like这样的操作的,但是现在可以了,这样减少了不必要的IO操作,但是只能用在二级索引上。
  • Using where: 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。注意:Extra列出现Using where表示MySQL服务器将存储引擎返回服务层以后再应用WHERE条件过滤。
  • Using join buffer: 使用了连接缓存:Block Nested Loop,连接算法是块嵌套循环连接;Batched Key Access,连接算法是批量索引连接
  • impossible where: where子句的值总是false,不能用来获取任何元组
  • select tables optimized away: 在没有GROUP BY子句的情况下,基于索引优化MIN/MAX操作,或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。
  • distinct: 优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作

转载于:https://www.cnblogs.com/Stay-J/p/10266087.html

Mysql Explain的简单使用相关推荐

  1. 简单了解SQL性能优化工具MySql Explain

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 写在前面 MySql Explain是对SQL进行性能优化不可或缺的工具,通过他我们可以对SQL进行一定的分析和性能优化,降 ...

  2. Mysql Explain 详解

    Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...

  3. [转]MySQL Explain详解

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

  4. mysql extended_explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二...

    MySQL 的explain命令有一个extended选项,我想可以很多人都没有注意,因为它对命令的输出结果没有任何改变,只是增加了一个warning.这个 warning中显示了MySQL对SQL的 ...

  5. MySQL - Explain深度剖析

    文章目录 生猛干货 官方文档 Explain介绍 测试数据 explain 使用 explain重要列说明 id select_type simple primary subquery derived ...

  6. MYSQL:explain分析

    mysql explain分析 通过explain可以知道mysql是如何处理语句,分析出查询或是表结构的性能瓶颈.通过expalin可以得到: 1. 表的读取顺序 2.表的读取操作的操作类型 3.哪 ...

  7. 对mysql explain讲的比较清楚的

    对mysql explain讲的比较清楚的 explain结果的每行记录显示了每个表的相关信息,每行记录都包含以下几个字段: id 本次 select 的标识符.在查询中每个 select都有一个顺序 ...

  8. MySQL Explain详解,分析语句为何运行慢

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

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

    转载自https://www.cnblogs.com/yycc/p/7338894.html 转自:http://blog.chinaunix.net/uid-540802-id-3419311.ht ...

最新文章

  1. 有关容器的六大误区和八大正确场景
  2. weex开发安卓原生应用
  3. 程序江湖:第十四章 离开让男人成长
  4. 移动服务安全现状分析!
  5. 掌握这 25 条小贴士,快速提升数据可视化能力!
  6. 从uptime、stress、mpstat、pidstat观察CPU密集型、IO密集型、进程密集型切换的系统性能
  7. array用法 numpy_python--numpy(3)
  8. Ubuntu查看文件夹下文件的个数
  9. mysql数据库访问组件_mysql数据库访问组件
  10. 一位Erlang程序员的自白
  11. 用PPT制作 电子相册,进行抽奖准备.
  12. 全国大学生计算机设计大赛(faceSchool)
  13. python教程视频全套下载-Python爬虫视频教程全集下载
  14. 【HTML+CSS】移动端布局之流式布局
  15. php怎么在excel表格中输出换行,Excel表格怎么换行打字
  16. 【论文翻译】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
  17. 优雅高效的多边形对称性判定算法
  18. html跑车模板,html5代码画兰博基尼跑车,6不6?
  19. cisco将计算机配置为vlan2,思科路由器如何配置VLAN的IP
  20. Memcached分布式算法

热门文章

  1. C++ —— C++内联函数
  2. cesium 页面截图_Cesium开发入门篇 | 02开发环境搭建及第一个示例
  3. mysql set语句_mysql--乱码解决(6)
  4. html无损转换pdf,Pdf2html :高保真PDF至HTML转换
  5. 四、PHP基础——会话技术Cookie 和 Session
  6. 一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)
  7. LeetCode 1733. 需要教语言的最少人数(哈希+枚举)
  8. LeetCode 371. 两整数之和(位运算加法)
  9. java shiro security_安全框架Shiro和SpringSecurity的比较
  10. linux ls-l getswd,liunx