博客
关于我
MySQL执行计划 EXPLAIN参数
阅读量:799 次
发布时间:2023-02-12

本文共 1690 字,大约阅读时间需要 5 分钟。

MySQL执行计划参数详解

在MySQL数据库中,使用EXPLAINDESC关键字可以查看查询执行计划,这是优化慢查询的重要手段。通过执行计划,我们可以深入了解查询的执行过程、性能瓶颈以及优化方向。

以下是执行计划中的10个关键参数及其详细解释:

1. id

  • 说明:表示在整个查询中SELECT语句的位置。
  • 示例id=1 表示这是查询中第一个被执行的SELECT语句。

2. select_type

  • 说明:描述查询的类型,主要包括:
    • SIMPLE:没有子查询的简单查询。
    • PRIMARY:主查询,通常与PRIMARY KEY相关。
    • UNION:用于合并两个或多个结果集的查询。
    • DEPENDENT UNION:与另一个查询相关联的UNION操作。
    • UNION RESULTUNION操作的结果集。
    • SUBQUERY:包含子查询的查询。
    • DEPENDENT SUBQUERY:与主查询相关联的子查询。
    • DERIVED:未直接使用WHEREHAVING子句的查询。

3. table

  • 说明:表示查询的表名。
  • 示例table="school" 表示查询的表是school

4. type

  • 说明:描述查询如何执行,可能值包括:
    • system:涉及系统表或其他特殊处理。
    • const:只返回常数值的结果。
    • eq_ref:使用等式引用索引来定位行。
    • ref:使用索引列来定位行。
    • ref_or_null:类似ref,但允许返回NULL值。
    • index_merge:使用索引合并来优化查询。
    • unique_subquery:使用唯一约束执行子查询。
    • index_subquery:使用索引执行复杂的子查询。
    • range:按范围查询索引列。
    • index:使用索引进行查找。
    • ALL:表示查询方式最慢,通常用于强制从所有行读取数据。

5. possible_keys

  • 说明:MySQL可以使用的索引列表。
  • 示例possible_keys="index_col1,index_col2" 表示可用索引为index_col1index_col2

6. key

  • 说明:实际使用的索引。
  • 示例key="index_col1" 表示实际使用了index_col1索引。

7. key_len

  • 说明:索引的长度。
  • 示例key_len=5 表示索引的长度为5。

8. ref

  • 说明:用于定位行的索引列或常数值。
  • 示例ref="prefix" 表示使用了prefix列的值来定位行。

9. rows

  • 说明:MySQL需要从表中检验的行数。
  • 示例rows=10 表示从表中检验了10行数据。

10. Extra

  • 说明:提供额外信息,描述MySQL如何执行查询。可能值包括:
    • Distinct:返回不同的记录。
    • Not exists:检查不存在的记录。
    • range checked for each record (index map):使用范围检查索引。
    • Using filesort:对结果集进行排序。
    • Using index:使用索引优化查询。
    • Using temporary:使用临时表存储结果。
    • Using where:使用WHERE子句过滤数据。
    • Using sort_union(...), Using union(...), Using intersect(...):对结果集进行并集或交集操作。
    • Using index for group-by:在GROUP BY中使用索引。

select_type 的具体值

  • SIMPLE
  • PRIMARY
  • UNION
  • DEPENDENT UNION
  • UNION RESULT
  • SUBQUERY
  • DEPENDENT SUBQUERY
  • DERIVED

type 的具体值

  • system
  • const
  • eq_ref
  • ref
  • ref_or_null
  • index_merge
  • unique_subquery
  • index_subquery
  • range
  • index
  • ALL

通过理解和分析这些参数,我们可以更好地识别查询的性能问题,并采取相应的优化措施。

转载地址:http://ybdfk.baihongyu.com/

你可能感兴趣的文章
nacos报错com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
查看>>
nacos服务提供和发现及客户端负载均衡配置
查看>>
Nacos服务注册与发现demo
查看>>
Nacos服务注册与发现的2种实现方法!
查看>>
nacos服务注册和发现原理简单实现案例
查看>>
Nacos服务注册总流程(源码分析)
查看>>
nacos服务注册流程
查看>>
Nacos服务部署安装
查看>>
nacos本地可以,上服务器报错
查看>>
Nacos注册Dubbo(2.7.x)以及namespace配置
查看>>
Nacos注册中心有几种调用方式?
查看>>
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>