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

目录

          • [1. 说明](#1. 说明)
          • [2. id](#2. id)
          • [3. select_type](#3. select_type)
          • [4. table](#4. table)
          • [5. partitions](#5. partitions)
          • [6. type](#6. type)
          • [7. possible_keys](#7. possible_keys)
          • [8. key](#8. key)
          • [9. key_len](#9. key_len)
          • [10. ref](#10. ref)
          • [11. rows](#11. rows)
          • [12. filtered](#12. filtered)
          • [13. Extra](#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字段包含了其他列无法涵盖的重要信息,对于深入理解查询的执行过程和优化策略具有重要意义。
相关推荐
STER labo4 分钟前
mysql配置环境变量——(‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法)
数据库·mysql·adb
dreamZhanglx25 分钟前
MySQL进阶
数据库·mysql
xmjd msup26 分钟前
MySQL 函数
数据库·mysql
jefl jxak1 小时前
mysql用户名怎么看
数据库·mysql
unDl IONA1 小时前
mysql之如何获知版本
数据库·mysql
俺不要写代码2 小时前
数据库:约束
数据库·mysql
WL_Aurora2 小时前
MySQL 5 卸载到 MySQL 8 安装完整指南(不踩坑版)
数据库·mysql
灰阳阳2 小时前
MySQL的基本架构
数据库·mysql·架构
@小柯555m3 小时前
MySql(高级操作符--Where in 和Not in)
数据库·sql·mysql
MmeD UCIZ3 小时前
MySQL单表存多大的数据量比较合适
数据库·mysql