【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字段包含了其他列无法涵盖的重要信息,对于深入理解查询的执行过程和优化策略具有重要意义。
相关推荐
Smile丶凉轩几秒前
MySQL库的操作
数据库·mysql·oracle
CodeChampion17 分钟前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis
我叫啥都行31 分钟前
计算机基础复习12.22
java·jvm·redis·后端·mysql
明矾java1 小时前
Mysql-SQL执行流程解析
数据库·sql·mysql
wy02_2 小时前
MySQL-MVCC(多版本并发控制)
数据库·mysql
中科院提名者4 小时前
Django连接mysql数据库报错ModuleNotFoundError: No module named ‘MySQLdb‘
数据库·mysql·django
Gauss松鼠会5 小时前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·人工智能·sql·mysql·gaussdb
总是学不会.5 小时前
【集合】Java 8 - Stream API 17种常用操作与案例详解
java·windows·spring boot·mysql·intellij-idea·java集合
编程修仙5 小时前
MySQL外连接
数据库·mysql
Edward-tan6 小时前
【全栈开发】----用pymysql库连接MySQL,批量存入
数据库·mysql·pymysql