//explain

id、  select_type、  table、 type 、possible_keys、key、 key_len、ref 、rows、 Extra

查询的类型 、表名 、表的连接类型、 查询时候可能用到的索引、  实际使用的索引 、索引字段的长度、  列与索引的比较、   扫描的行数、   执行情况的描述说明

一、id

id 查询的标志符 如果id相同 执行顺序是从上到下 id的值越大优先级越高

二、type

type mysql在表中找到所需行的方式

类型: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)

ALL 遍历全表找到匹配的行

index index只遍历索引树

range 只检索给定范围的行

ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件

const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system

NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

三、possible_keys

指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用(该查询可以利用的索引,如果没有任何索引显示 null)

该列完全独立于EXPLAIN输出所示的表的次序。这意味着在possible_keys中的某些键实际上不能按生成的表次序使用。

如果该列是NULL,则没有相关的索引。在这种情况下,可以通过检查WHERE子句看是否它引用某些列或适合索引的列来提高你的查询性能。如果是这样,创造一个适当的索引并且再次用EXPLAIN检查查询

四、Key

key列显示MySQL实际决定使用的键(索引),必然包含在possible_keys中

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

五、key_len

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的)

不损失精确性的情况下,长度越短越好

六、ref

列与索引的比较,表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

七、rows

估算出结果集行数,表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数

八、Extra

该列包含MySQL解决查询的详细信息,有以下几种情况:

Using where:不用读取表中所有信息,仅通过索引就可以获取所需数据,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤

Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by

Using filesort:当Query中包含 order by 操作,而且无法利用索引完成的排序操作称为“文件排序”

Using join buffer:该值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。

Impossible where:这个值强调了where语句会导致没有符合条件的行(通过收集统计信息不可能存在结果)。

Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行

No tables used:Query语句中使用from 或不含任何from子句

mysql中的explain_mysql中的explain分析相关推荐

  1. mysql中的explain_MySQL中的EXPLAIN

    使用EXPLAIN加上SELECT语句可以获取优化器的查询执行计划 MySQL会在查询上设置一个标记,当执行查询时,这个标记会返回关于在执行计划中每一步的信息,而不是执行它.它会返回一行或多行信息,一 ...

  2. mysql 执行效率命令_MySQL优化--explain 分析sql语句执行效率

    MySQL优化--explain 分析sql语句执行效率 explain 命令 explain 命令在解决数据库性能上市第一推荐使用命令,大部分的性能问题可以通过此命令来简单解决,explain可以用 ...

  3. mysql性能优化 洪斌_mysql explain分析

    expain出来的信息有10列,分别是id.select_type.table.type.possible_keys.key.key_len.ref.rows.Extra,下面对这些字段出现的可能进行 ...

  4. mysql字段名explain_Mysql中explain用法和结果字段的含义介绍

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开 分享一下大神老师的人工智能教程.零基础!通俗易懂!风趣幽默(偶尔开开车,讲讲黄段子)! 大家可以看看是否对自己有帮助,如果你 ...

  5. explain mysql怎么用_mysql中explain用法详解

    EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...

  6. mysql中char与varchar的区别分析

    原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中cha ...

  7. mysql range用法_MySQL中Explain的用法总结(详细)

    本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 执行计划(query Execution plan) 语法e ...

  8. mysql join图解_MySQL中Join算法实现原理分析[多图]

    在MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join.顾名思义,Nes ...

  9. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)

    mysql中时间查询函数(包括时间戳) 这些函数都是MySQL自带的,可以直接使用在PHP写的MySQL查询语句中哦 1-CURDATE()或CURRENT_DATE()和CURTIME()或CURR ...

最新文章

  1. 2017.4.6AM
  2. vb循环 Do While…Loop 语句/Do Until…Loop语句
  3. Microduino中LM75温度传感器的使用
  4. Spring AOP AspectJ
  5. 我读的第一本书《梦断代码》
  6. 漫画:如何实现抢红包算法?
  7. Python将字符串转为字典最佳实践
  8. [译] Martin Fowler - Web 应用安全基础
  9. 2020公务员考试应届毕业生的身份界定
  10. 使用Idea合并svn分支到主干上
  11. 西门子逻辑运算指令_西门子plc位逻辑运算指令
  12. Linux查看主板型号及硬件信息
  13. 明尼苏达员工满意度量表包括哪些内容?
  14. Houdini学习 —— 使用VOP进行陨石坑效果制作
  15. [POJ2187]Beauty Contest(计算几何-旋转卡壳-最远点对)
  16. 第十一周学习周报(20180514-20180520)
  17. 手写简易版链表及原理分析
  18. Java.SE01.多线程_案例01
  19. Gradle排除依赖模块的某个类
  20. 高等数学学习笔记——第三十四讲——函数的单调性与凹凸性(凹凸性)

热门文章

  1. 为何字节跳动、腾讯、阿里都要用Python?CSDN都要对它下手了!
  2. 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...
  3. 小米否认“造车”;微软中国回应关闭实体直营店;Angular 10 发布 | 极客头条...
  4. 震惊!谷歌专家爆料:Python和AI这回真的玩大了!网友:好方法!
  5. Deno 会取代 Node.js 吗?
  6. CSDN 联合 18 家大厂招聘直播,10 小时突破百万热度!
  7. 让 AI 训练 AI:揭秘阿里、浙大的 AI 训练师助手
  8. 我的第一个全栈 Web 应用程序
  9. Unix 激荡 50 年:驱动 Android、iOS 的操作系统是如何从失败开始的?
  10. 大数据“重磅炸弹”:实时计算框架 Flink