id
id值有相同,又有不同:id值越大越优先;id值相同,从上往下顺序执行

select_type 查询类型
PRIMARY:包含子查询SQL中的主查询(最外层)
SUBQUERY:包含子查询SQL中的子查询(非最外层)
simple:简单查询(不包含子查询、union)
derived:衍生查询(使用到了临时表)
a.在from子查询中只有一张表
b.在from子查询中,如果有table1 union table2,则table1就是derived,table2就是union
union:上例
union_result:告知那些表存在union查询

tpye 索引类型
system>const>eq_ref>ref>range>index>all 要对type进行优化的前提:有索引
其中:system,const只是理想情况 ; 实际能达到:ref>range
system:只有一条数据的系统表;或衍生表只有一条数据的主查询
const:仅仅能查到一条数据的SQL,用于primary key或unique key
eq_ref:唯一性索引,对于每个索引键的查询,返回匹配唯一行数据(有且只有1个,不能多,不能为0)常见于主键索引和唯一索引
ref:非唯一性索引,对于每个索引键的查询,返回匹配的所有行(0,多)
range:检索指定范围的行,where后面是一个范围查询(between,in,>,<,>=,<=,in有时会失效变为无索引all)
index:查询全部索引中的数据
all:查询全部表中的数据

结论:
system/const:结果只有一条数据
eq_ref:结果多条;但是每条数据是唯一的
ref:结果多条;但是每条数据是0条或多条

possible_keys 可能用到的索引,是一种预测,不准

key 实际使用的索引

key_len 索引的长度,用于判断复合索引是否被完全使用(utf8中一个字符占3个字节,如果索引字段可以为null,则会用一个字节用于标识,用2个字节标识可变长度)

ref 指明当前表所参照的字段(常量为const)

rows 被索引优化查询的数据行数(实际通过索引查询到的数据行数)

extra
using filesort:消耗性能大,需要“额外”的排序(查询)
对于单索引,如果排序和查找是同一个字段,则不会出现using filesort。反之。
复合索引:不能跨列(最左前缀原则)。避免:where和order by按照复合索引的顺序使用,不要跨列或无序使用
using temporary:性能损耗大,用到了临时表。一般出现在group by语句中。已经有表了,但不适用,必须再来一张表。 避免:查询哪些列,就根据哪些列group by。
using index:性能提升,覆盖索引。不读取原文件,只从索引中获取数据(不需要回表查询)
如果用到了索引覆盖,会对possible_key和key造成影响:
如果没有where,则索引只出现在key中
如果有where,则索引出现在key和possible_key中
using where(需要回表查询)
impossible where:where子句永远为false
using join buffer:mysql引擎使用了连接缓存

mysql执行计划字段解释相关推荐

  1. mysql执行计划字段解析_MySQL执行计划解析

    前言 在实际数据库项目开发中,由于我们不知道实际查询时数据库里发生了什么,也不知道数据库是如何扫描表.如何使用索引的,因此,我们能感知到的就只有SQL语句的执行时间.尤其在数据规模比较大的场景下,如何 ...

  2. 【数据库】mysql执行计划

    目录 执行计划参数与解释 1.id        表示SQL执行顺序 2.select_type        表示查询中每个select子句的类型 1.SIMPLE 2.PRIMARY 3.SUBQ ...

  3. mysql执行计划命令_【MySQL】EXPLAIN命令详解--解释执行计划

    具体参考: 原文如下: 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索 ...

  4. MySQL执行计划解读

    MySQL执行计划解读 http://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765237.html MySQL执行计划解读 Explain语法 E ...

  5. mysql执行计划查看_查看Mysql执行计划

    1.MySQL语法 MySql提供了EXPLAIN语法用来进行查询分析,在SQL语句前加一个"EXPLAIN"即可. 默认情况下Mysql的profiling是关闭的,所以首先必须 ...

  6. mysql 执行计划 视频_MySQL执行计划的讲解

    最近同事在执行线上执行一条MySQL的查询语句,数据的话在9000条左右,但使用左连接的时候查询速度大概在15秒左右~这速度确实是无法接受的~ 经过简单的修改,变为内连接的话,执行速度不到1秒. 下面 ...

  7. Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结

    前言 对于MySQL执行计划的获取,我们可以通过explain方式来查看,explain方式看似简单,实际上包含的内容很多,尤其是输出结果中的type类型列.理解这些不同的类型,对于我们SQL优化举足 ...

  8. mysql执行计划缓存在哪_怎么去看懂mysql的执行计划

    mysql的查看执行计划的语句很简单,explain+你要执行的sql语句就OK了. 举一个例子 EXPLAIN SELECT * from employees where employees.gen ...

  9. 怎么看mysql执行计划

    前言 mysql是关系型数据库中比较流行的一款数据库.在工作中使用mysql,难免会遇到sql执行缓慢的情况.这时候,我们就需要查看sql的执行计划,以此来分析sql执行缓慢的问题所在. 如何查看my ...

最新文章

  1. JAVA NIO - Buffer Channel
  2. 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
  3. MVC4.0网站发布和部署到IIS7.0上的方法【转:http://www.th7.cn/Program/net/201403/183756.shtml】...
  4. java初学者指南_Java初学者指南
  5. maven引用外部jar依赖
  6. allegro导出坐标文件正反面_Orcad与Allegro交互
  7. Toast.makeText(MainActivity.this, R.string.alert, Toast.LENGTH_SHORT).show(); 解释
  8. mysql数据库连接限制,mysql-获取数据库连接表有限制
  9. 如何跟上时代的步伐进入云世界
  10. 在设备上添加项目失败_使用VisualGDB将Keil项目导入VisualStudio
  11. 1小时教你理解HTTP,TCP,UDP,Socket,WebSocket
  12. 通过sql脚本可以从数据库中查到数据,但是通过jdbc却获取不到
  13. 定位点击WebBrowser、点击Flash、偷菜外挂
  14. 计算机网络 | 划分子网
  15. 手机重装为linux,安卓手机重装系统的方法
  16. 解决:RN和H5之间通信
  17. PyScripter中文乱码原因
  18. 购物网站排名 - 全球电子商务或购物企业网站一览 -2010
  19. 图片转pdf用什么软件好?图片转pdf软件哪个好?
  20. 牛津博士讲大数据和量化金融

热门文章

  1. 网站 html 中英文切换 - API 总结篇
  2. 大米API源码v2.0(全新UI版本)
  3. 无域名限制版小智收录网+简单的zblog导航网模板
  4. ASP.NET Web API的Controller是如何被创建的?
  5. WebClient.Credentials 属性 (System.Net)
  6. 去除狂人采集器添加在帖子中的广告信息
  7. PHP7革新与性能优化
  8. 用Vim编程——配置与技巧
  9. 如何查看 Linux是32位还是64位?
  10. CSV 导入mysql 数据库