【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字段包含了其他列无法涵盖的重要信息,对于深入理解查询的执行过程和优化策略具有重要意义。
相关推荐
努力奋斗的小杨22 分钟前
学习MySQL的第十一天
数据库·笔记·sql·学习·mysql·navicat
长安城没有风1 小时前
从入门到精通【MySQL】视图与用户权限管理
数据库·mysql
Hejjon2 小时前
Mysql 中 select ... for update 加锁总结
java·数据库·mysql
等等5432 小时前
mysql——索引事务和JDBC编程
数据库·mysql
brevity_souls2 小时前
Spring Security
java·mysql·spring
微辣已是极限4 小时前
mysql日常巡检
数据库·mysql·dba
Fanche4046 小时前
MySQL 8 自动安装脚本(CentOS-7 系统)
linux·运维·数据库·mysql·centos
聪明的墨菲特i7 小时前
SQL进阶知识:四、索引优化
数据库·sql·mysql·database·索引·db2
我该如何取个名字12 小时前
Mac mini 安装mysql数据库以及出现的一些问题的解决方案
数据库·mysql·macos
蒂法就是我13 小时前
MySQL 的锁,表级锁是哪一层的锁?行锁是哪一层的锁?
数据库·mysql