【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字段包含了其他列无法涵盖的重要信息,对于深入理解查询的执行过程和优化策略具有重要意义。
相关推荐
.生产的驴36 分钟前
Docker 部署Nacos 单机部署 MYSQL数据持久化
android·运维·spring boot·sql·mysql·docker·容器
猫爪笔记1 小时前
MySQL数据库:SQL语言入门 【2】(学习笔记)
数据库·笔记·sql·学习·mysql
hefaxiang2 小时前
[Mysql] Mysql的多表查询----多表关系(下)
数据库·mysql
花花花12 小时前
RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计
mysql·低代码·typescript·vue·开发工具·radsystems
丶21364 小时前
【大数据】MySQL与Elasticsearch的对比分析:如何选择适合的查询解决方案
大数据·mysql·elasticsearch
豆 腐5 小时前
MySQL【五】
数据库·笔记·mysql
DC_BLOG6 小时前
Mysql前言
数据库·sql·mysql
没有黑科技6 小时前
仓库管理系统设计与实现(Java+Mysql)
java·开发语言·mysql
jjjxxxhhh1236 小时前
mysql 示例验证demo
android·mysql·adb