博客
关于我
MySQL执行计划 EXPLAIN参数
阅读量:789 次
发布时间: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/

你可能感兴趣的文章
mysql函数汇总之日期和时间函数
查看>>
mysql函数汇总之条件判断函数
查看>>
mysql函数汇总之系统信息函数
查看>>
MySQL函数简介
查看>>
mysql函数遍历json数组
查看>>
MySQL函数(转发)
查看>>
mysql分区表
查看>>
MySQL分层架构与运行机制详解
查看>>
mysql分库分表中间件简书_MySQL分库分表
查看>>
MySQL分库分表会带来哪些问题?分库分表问题
查看>>
MySQL分组函数
查看>>
MySQL分组查询
查看>>
Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
查看>>
mySql分页Iimit优化
查看>>
MySQL分页查询
查看>>
mysql列转行函数是什么
查看>>
mysql创建函数报错_mysql在创建存储函数时报错
查看>>
mysql创建数据库和用户 并授权
查看>>
mysql创建数据库指定字符集
查看>>
MySql创建数据表
查看>>