Mysql中explain执行计划信息中字段详解

2023-10-26

1. 获取执行计划

explain select * from t5;
--或
desc select * from t5;

在这里插入图片描述

2. 字段含义

2.1 id

每个select子句的执行顺序,相同从上到下,不同由大到小执行

2.2 select_type

select语句类型

  • SIMPLE 简单的select查询,查询中不包含子查询或者UNION
  • PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY
  • SUBQUERY 在SELECT或WHERE列表中包含了子查询
  • DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生),MySQL会递归执行这些子查询,把结果放在临时表中
  • UNION 若第二个SELECT出现在UNION之后,则被标记为UNION:若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED
  • UNION RESULT 从UNION表获取结果的SELECT

2.3 table

当前执行的表名

2.4 partitions

显示当前访问的分区

2.5 type

查询使用了哪种类型

#由好到差依次是
system > const > eq_ref > ref > range > index > all
  • system 表只有一行记录
  • const 表示通过索引一次找到,const用于比较primary key 或者unique索引
  • eq_ref 唯一性索引扫描,使用唯一性索引或主键查找时会发生
  • ref 索引扫描,它返回所有匹配某个单个值的行。此类索引访问只有当使用非唯一性索引或唯一性索引非唯一性前缀时才会发生
  • range 范围扫描索,它返回所有匹配某个单个值的行。此类索引访问只有当使用非唯一性索引或唯一性索引非唯一性前缀时才会发生
  • index 和全表扫描一样。只是扫描表的时候按照索引次序进行而不是行。主要优点就是避免了排序, 但是开销仍然非常大。如在Extra列看到Using index,说明正在使用覆盖索引,只扫描索引的数据,它比按索引次序全表扫描的开销要小很多
  • all 全表扫描

2.6 possible_keys

显示查询使用了哪些索引,表示该索引可以进行高效地查找

2.7 key

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

2.8 ley_len

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

2.9 ref

显示使用哪个列或常数与key一起从表中选择行

2.10 rows

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

2.11 extra

Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。

类型 说明
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操作,在找到第一匹配的元组后即停止找同样值的动作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql中explain执行计划信息中字段详解 的相关文章

随机推荐

  • 实现修改代码后刷新页面即可得到结果

    关于devtools实现热加载 相信很多刚入idea的小伙伴们 对调试一次代码就要重新启动一次服务感到非常的厌倦 那么这次我就来教大家 如何应用devtools这个开发者工具包实现只要启动一次服务器 刷新页面即可得到修改结果的效果 1 首先
  • 20191004在LINUX下如何将tar压缩文件解压到指定的目录下

    百度搜索 tar 解压缩到指定目录 https zhidao baidu com question 9844116 html 在LINUX下如何将tar压缩文件解压到指定的目录下 各位 请教一下在LINUX下如何将tar压缩文件解压到指定的
  • 硬盘安装Freebsd7.0无痛快速版

    硬盘安装Freebsd成功了 安装Freebsd 7 0 最小系统在 我的老笔记本上 toshiba portege 3490ct 用时10分钟 1 去 sourceforge net 下载一个 unetbootinhttp downloa
  • API 和ABI的区别

    应用程序二进制接口 ABI Application Binary Interface 定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则 主要包括基本数据类型 通用寄存器的使用 参数的传递规则 以及堆栈的使用等等 ABI涵
  • 前端CSS权重你了解吗?

    CSS权重 CSS权重指的是样式的优先级 有两条或多条样式作用于一个元素 权重高的那条样式对元素起作用 权重相同的 后写的样式会覆盖前面写的样式 权重的等级 可以把样式的应用方式分为几个等级 按照等级来计算权重 1 important 加在
  • 研究生毕业致谢感言

    时光荏苒 转眼便已进入硕士研究生的尾声 如果以相机倒带的形式回顾过去两年半的时间里 有为了研修学分而奔波于教室和图书馆之间的镜头 有为了做实验写论文埋头苦干到深夜的镜头 有受过打击受过伤害 相然也有喜悦振臂高呼的镜头 硕士研究生的结果很美好
  • python设置画图风格_Python可视化33

    本文详细介绍matplotlib 绘图风格 style 及rcParams设置 本文速览 1 rcParams默认参数修改 rcParams中默认参数绘图 修改rcParams默认参数 取消rcParams参数修改 2 绘图风格设置 wit
  • Python入门之Lambda函数

    匿名函数的定义 在 Python 里有两类函数 第一类 用 def 关键词定义的正规函数 第二类 用 lambda 关键词定义的匿名函数 Python 使用 lambda 关键词来创建匿名函数 而非def关键词 它没有函数名 其语法结构如下
  • Java 读取任意shapefile的所有字段,并插入到MongoDB数据库(Spring Boot)

    文章目录 Java 读取任意shapefile的所有字段 并插入到MongoDB数据库 Spring Boot 1 统一返回结果封装 2 shp文件数据实体封装 3 核心代码 3 可能出现的异常 3 1 异常产生原因 3 2 解决方案 4
  • idea debug高级特性看这篇就够了

    文章目录 多线程调试 循环遍历条件断点 显示方法返回值 调试过程中动态修改变量的值 调试内存泄露 所谓工欲善其事必先利其器 从eclipse转idea也有一段时间了 一直想总结下idea调试的一些高级技巧 debug过程如果高效 撸代码也会
  • Matlab实现图像的比例缩放

    以灰度图像circuit tif为例 利用Matlab图像处理工具箱中的imresize函数对图像进行比例缩放变换 要求 创建4个figure窗口 不可以用subplot 显示不出来放大效果 分别用于显示原始图像 等比例放大1 5倍后的图像
  • 记录--vue+three,制作iview大波浪特效

    这里给大家分享我在网上总结出来的一些知识 希望对大家有所帮助 一 效果图 具体效果可参考iview官方界面iView 一套高质量的UI组件库 大波浪效果 使用的是three js的官方例子 需要先安装three js支持 npm insta
  • mysql用到了 all 和 Using temporary; Using filesort,如何优化?

    使用 EXPLAIN 分析查询的执行计划可以帮助优化查询 这两个标识表示 MySQL 需要使用临时表来执行查询 或者在查询结束时对结果进行排序 这可能会导致查询运行得更慢 要优化查询 你可以尝试以下方法 尽量避免使用 SELECT 而是只选
  • DDD(领域驱动设计)系列主题:聚合和聚合根

    本篇文章主要介绍了聚合根 聚合的概念 然后介绍了聚合的设计过程和原则 以及对比了聚合 聚合根 实体 值对象的特点 思考的问题 为什么要在限界上下文和实体之间增加聚合和聚合根的概念 它们的作用是什么 如何设计聚合 概念和职责 聚合根 如果把聚
  • 2020年数学建模国赛A题:炉温曲线

    2020年高教社杯全国大学生数学建模竞赛题目 请先阅读 全国大学生数学建模竞赛论文格式规范 A题 炉温曲线 在集成电路板等电子产品生产中 需要将安装有各种电子元件的印刷电路板放置在回焊炉中 通过加热 将电子元件自动焊接到电路板上 在这个生产
  • 虚拟机的快捷键

    ctrl alt 鼠标就出来了 ctrl c 中断当前操作
  • 谷粒商城--从入门到入坟(持续更新)第一篇:总体概括

    简介 谷粒商城项目 是尚硅谷的一套基于微服务的电商视频 在网上大受欢迎 本人系大三老狗 准备用大约一个月时间 去拆解该商品的知识点 由点及面 最后希望呈现一个比较好的效果 每个知识点 配套的安装软件及源码也会发布出来 希望有伙伴能一起进步
  • 自定义控件.DateTimePicker_02

    ZC 踩坑过程在 后面 1 在 Generic xaml 中添加内容
  • Unknown system variable 'query_cache_size' 问题终于解决了,原来是这样!

    遇到这种问题搞了半天终于解决 原因 mysql connecter java的版本过低 很显然是数据库驱动程序与数据库版本不对应 查看了一下配置 发现mysql connector java的版本是5 1 37 而我本地mysql版本是8
  • Mysql中explain执行计划信息中字段详解

    Mysql中explain执行计划信息中字段详解 1 获取执行计划 2 字段含义 2 1 id 2 2 select type 2 3 table 2 4 partitions 2 5 type 2 6 possible keys 2 7