#1.explain中各个名称的解释:

#1.1.id:查询ID

id是一组数字,表示查询中执行select子句或操作表的顺序,如果id相同,则执行顺序从上至下,如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行。

#1.2.select_type:声明类型

常见的六个值:

1.SIMPLE:简单的select查询,查询中不包含子查询或者UNION。

2.PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为primary。

3.SUBQUERY:在SELECT或WHERE列表中包含了子查询。

4.DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生),Mysql会递归执行这些子查询,把结果放在临时表里。

5.UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将标记为:DERIVED。

6.UNION RESULT:从UNION表获取结果的SELECT。

#1.3.table:引用表

显示的查询表名,如果查询使用了别名,那么这里显示的是别名。

如果不涉及对数据表的操作,那么这显示为null。

如果显示为尖括号括起来的<derived N>就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。

如果是尖括号括起来的<union M,N>,与<derived N>类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。

#1.4.type:连接类型

依次从好到差:

system > const > eq_ref > ref > range > index > ALL

重点:一般来说,得保证查询至少达到range级别,最好能达到ref级别

system:表只有一行记录(等于系统表),这是const类型的特例,平时不会出现,这个也可以忽略不计。

const:表示通过索引一次就找到了,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快。如将主键置于where列表中,mysql就能将该查询转换为一个常量。

eq_ref:唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或者唯一索引扫描。

ref:非唯一性索引扫描,返回匹配某个单独值得所有行。本质上也是一种索引访问,它返回所有匹配某个单独值得行,然而,他可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。

range:只检索给定范围的行,使用一个索引来选择行。key例显示使用了哪个索引。一般就是在你的where语句中出现了between、<、>、in等的查询。这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。

index:Full Index Scan,index和ALL区别为index类型只遍历索引树。这通常比ALL快,因为索引文件通常比数据文件小。(也就是说虽然all和Index都是读全表,但index是从索引中读取的,而all是从硬盘中读的)。

all:Full Table Scan,将遍历全表以找到匹配的行。

#1.5.possible_keys:

#1.6.key:

#1.7.key_len:

#1.8.ref:

#1.9.rows:

#1.10.Extra:

微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布:

mysql explain理解相关推荐

  1. mysql explain rows理解

    在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时.其中,rows用来表示在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 explain insert_MySQL之EXPLAIN 执行计划详解

    explain 可以分析 select语句的执行,即 MySQL 的"执行计划. 一.type 列 MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好):| All | ind ...

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

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

  6. MySQL explain结果详解

    Mysql Explain 结果详解 语法 explain < SQL statement> 例如: explain select * from t3 where id=3952602; ...

  7. mysql explain ref const_MySQL EXPLAIN 详解

    一 .介绍 EXPLAIN 命令用于SQL语句的查询执行计划.这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做 ...

  8. mysql explain 的using where 到底是什么意思?

    转自mysql explain 的using where 到底是什么意思? - SegmentFault 思否 https://segmentfault.com/q/1010000007000995 ...

  9. 一文读懂 MySQL Explain 执行计划

    一.前言 上周老周的一个好朋友让我出一篇教你读懂 SQL 执行计划,和我另一位读者反馈的面试题如何排查慢 SQL 的强相关,索性先出一篇一文读懂 MySQL Explain 执行计划.Explain ...

最新文章

  1. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3
  2. ucontext-人人都可以实现的简单协程库
  3. 如何从0到1搭建电商促销系统?
  4. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)
  5. 《系统集成项目管理工程师》必背100个知识点-98大数据的特点
  6. web工作流管理系统开发之十九 工作流系统的事务处理
  7. 【Git】git add -A = git add . + git add -u
  8. 2021年恩阳中学高考成绩查询,巴中市恩阳中学2021年排名
  9. Linux下如何定位Java进程CPU利用率过高原因
  10. url、href、src
  11. 快捷指令 python_快捷指令 pythonista wifi连接上局域网(自动)唤醒主机电脑或投影仪...
  12. Q104:怎么用ray tracing画基于磨边楔形的“花环(Rosette)”
  13. java动态代理和Cglib动态代理的区别和使用
  14. pcie扰码的作用_扰码讲解
  15. html 引入 svg矢量图,前端可视化——SVG矢量图技术
  16. crontab一些常用的语法 每天凌晨1点重启一遍
  17. JavaScript读书笔记-03
  18. 为什么引入非线性激励函数?
  19. Unity3D音频的制作
  20. Long类型的数据转换

热门文章

  1. 自监督学习和对比学习
  2. 推荐算法炼丹笔记:序列化推荐算法Bert4Rec
  3. 年前最后一波成绩单,请查收!
  4. 互联网1分钟 |1226
  5. 使用FatJar打包java project(非web工程)
  6. CSS3 border-radius妙用
  7. 仔细讨论 C/C++ 字节对齐问题⭐⭐
  8. 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考
  9. Spark RDD解密
  10. linux 常见试题(2)-选择