博客
关于我
MySQL执行计划 EXPLAIN参数
阅读量:793 次
发布时间: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启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
MySQL命令行登陆,远程登陆MySQL
查看>>
mysql命令:set sql_log_bin=on/off
查看>>
mySQL和Hive的区别
查看>>
MySQL和Java数据类型对应
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>
Mysql在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
查看>>
Mysql在Windows上离线安装与配置
查看>>
MySQL在渗透测试中的应用
查看>>
Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
查看>>
Mysql在离线安装时提示:error: Found option without preceding group in config file
查看>>
MySQL基于SSL的主从复制
查看>>
Mysql基本操作
查看>>
mysql基本操作
查看>>