当前位置: 首页 > article >正文

【mysql】explain执行计划的各个参数

目录

          • 1. 说明
          • 2. id
          • 3. select_type
          • 4. table
          • 5. partitions
          • 6. type
          • 7. possible_keys
          • 8. key
          • 9. key_len
          • 10. ref
          • 11. rows
          • 12. filtered
          • 13. Extra

1. 说明
  • 1.EXPLAIN执行计划是MySQL中用于分析查询语句性能的重要工具。
  • 2.它展示了MySQL如何处理SQL语句,包括表的读取顺序、数据读取操作类型、可能及实际使用的索引等。
2. id
  • 1.含义:SELECT查询的序列号,表示查询中执行SELECT子句或操作表的顺序。
  • 2.解释:每个SELECT关键字都对应一个唯一的id值。在简单的查询中,id通常为1。在复杂的查询中,如包含子查询或UNION的查询,每个SELECT关键字都会被分配一个唯一的id值,以表示其执行顺序,通常第一个select的id值最小。
3. select_type
  • 1.含义:查询的类型,用于区分普通查询、联合查询、子查询等。
  • 2.常见类型:SIMPLE(简单查询,不包含子查询和UNION)、PRIMARY(最外层查询,若包含复杂子查询,则最外层被标记为PRIMARY)、UNION(UNION中的第二个及后续SELECT被标记为UNION)、SUBQUERY(在SELECT或WHERE列表中包含的子查询)、DERIVED(在FROM列表中包含的子查询,也叫做派生类)等。
4. table
  • 1.含义:表示EXPLAIN语句正在访问的表名或别名。
  • 2.解释:它可能是具体的表名,表示从实际的物理表中获取数据;也可能是表的别名;或者是以derivedN的形式表示使用了id为N的查询所产生的衍生表;当存在UNION RESULT时,表名可能是union n1,n2等的形式,表示参与UNION的id。
5. partitions
  • 1.含义:匹配的分区信息。
  • 2.解释:对于分区表,该字段显示查询正在访问的分区。如果查询未涉及分区表,则该字段值为NULL。
6. type
  • 1.含义:访问类型,表示以何种方式访问数据库。
  • 2.常见类型(按效率从高到低):system(表只有一行记录,是const类型的特例)、const(最多匹配一条数据,通常使用主键或唯一索引进行等值查询)、eq_ref(等值联表查询时使用主键索引或唯一性非空索引)、ref(使用非唯一性索引进行查找)、range(利用索引查询时限制了范围)、index(全索引扫描)、ALL(全表扫描)。
  • 3.解释:type字段是评估查询效率的重要指标。通常,我们希望查询能够使用到range级别及以上的访问方式,以避免全表扫描和全索引扫描的低效操作。
7. possible_keys
  • 1.含义:显示查询可能使用的索引。
  • 2.解释:它列出了查询可能应用的索引。这些索引是基于查询涉及的字段上存在的索引。然而,这些索引并不一定被查询实际使用。
8. key
  • 1.含义:实际使用的索引。
  • 2.解释:它显示了MySQL实际采用哪个索引来优化对该表的访问。如果为NULL,则表示没有使用索引。
9. key_len
  • 1.含义:索引中使用的字节数。
  • 2.解释:它表示查询中实际使用的索引长度。索引的大小会影响IO操作的次数和量,从而影响执行效率。因此,在可能的情况下,应选择长度较短的索引。
10. ref
  • 1.含义:当使用索引列等值查询时,与索引列进行等值匹配的对象信息。
  • 2.解释:它显示了使用索引列进行等值查询时,与索引列匹配的列或常量值。
11. rows
  • 1.含义:预估的需要读取的记录条数。
  • 2.解释:它是基于表的统计信息和索引使用情况,对找出所需记录所需读取的数据行数进行的大致估算。这个值对于评估查询效率非常重要。
12. filtered
  • 1.含义:某个表经过搜索条件过滤后剩余记录条数的百分比。
  • 2.解释:它是对表中符合某个条件(如WHERE子句或连接条件)的记录数所占百分比的一个悲观估算。
13. Extra
  • 1.含义:一些额外的信息。
  • 2.常见信息:Using index(表示当前的查询是覆盖索引的,直接从索引中读取数据,而不用访问数据表)、Using where(表示使用WHERE子句进行条件过滤)、Using temporary(表示建立临时表来保存中间结果)、Using join buffer(表示使用连接缓存)、Impossible WHERE(表示WHERE语句的结果总是false)等。
  • 3.解释:Extra字段包含了其他列无法涵盖的重要信息,对于深入理解查询的执行过程和优化策略具有重要意义。

http://www.kler.cn/a/395048.html

相关文章:

  • LinuxCentos中安装apache网站服务详细教程
  • SQL中的时间类型:深入解析与应用
  • 数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
  • 【力扣热题100】[Java版] 刷题笔记-169. 多数元素
  • Android Studio更新成2024.1.2版本后旧项目Gradle配置问题
  • C语言入门到精通(第六版)——第十六章
  • C# Winform--SerialPort串口通讯(ASCII码发送)
  • linux 能显式修改文件的最后一次访问时间和文件内容最后被修改的时间,不能显式修改文件状态最后被改变的时间,为什么
  • Leetcode 3352. Count K-Reducible Numbers Less Than N
  • vue el-upload js 上传文件只有uid
  • Linux自定义终端提示符
  • 基于Spider异步爬虫框架+JS动态参数逆向+隧道代理+自定义中间件的猎聘招聘数据爬取
  • 一文了解Android中的AudioFlinger
  • C++ 数据结构详解
  • uniapp: IOS微信小程序输入框部分被软键盘遮挡问题
  • Vue2:组件
  • 常用服务部署
  • Python学习26天
  • SpringBoot(二十三)SpringBoot集成JWT
  • Ceph 中Crush 算法的理解
  • 【Linux】-学习笔记03
  • 【LangChain系列7】【LangChain实战—客服机器人项目】
  • Javascript中的深浅拷贝以及实现方法
  • CSS 语法规范
  • 【卷积神经网络】
  • 关于k8s中镜像的服务端口被拒绝的问题