博客
关于我
MySQL执行计划解读
阅读量:801 次
发布时间:2023-02-12

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

MySQL 执行计划详解

EXPLAIN 语法

EXPLAIN 是 MySQL 用于解释查询执行计划的命令。常见的变体包括:

  • EXPLAIN SELECT:将执行计划反编译为 SELECT 语句,便于分析优化。
  • EXPLAIN EXTENDED SELECT:提供更多详细信息,包括优化器对查询的处理方式。
  • 执行计划的组成

    执行计划包含以下关键字段:

    • id:表示查询的执行顺序,id 相同的操作按顺序执行,id 越大优先级越高。
    • select_type:描述查询类型,如 SIMPLE(简单查询)、PRIMARY(包含复杂子查询)、SUBQUERY(子查询)、DERIVED(衍生查询)、UNION(联合查询)等。

    查询访问类型

    执行计划中的 type 字段描述了 MySQL 找到数据的方式,共有多种访问类型,从左到右依次表示从差到好:

    • ALL:全表扫描。
    • index:使用索引,但不一定覆盖所有字段。
    • range:基于索引的范围扫描。
    • ref:唯一性索引扫描。
    • const:常数值查询,优化为常量访问。
    • system:系统只含有一行数据的特殊常数访问。
    • NULL:查询中未使用索引。

    索引相关字段

    • possible_keys:MySQL 可能使用的索引列表,反映查询中涉及的字段是否有索引。
    • key:实际使用的索引信息,未使用则显示为 NULL。
    • key_len:索引字段的最大长度,反映字段的定义长度,而非实际使用长度。
    • ref:匹配索引字段的列或常量值。
    • rows:估算找到所需记录的行数。

    Extra 字段

    Extra 包含额外信息:

    • Using index:表示是否使用了覆盖索引。
    • Using where:表示是否进行了后过滤。
    • Using temporary:表示是否使用了临时表。
    • Using filesort:表示是否需要进行文件排序。

    MySQL 执行计划的局限

    尽管 EXPLAIN 是非常有用的工具,但也有以下限制:

    • 不提供触发器、存储过程或函数等高层逻辑的执行信息。
    • 不考虑缓存机制的影响。
    • 不能反映 MySQL 的优化决策。
    • 统计信息可能是估算值。
    • 只能解释 SELECT 操作,其他操作需转换为 SELECT 后查看。

    通过合理使用 EXPLAIN 和理解执行计划,开发人员可以更好地优化数据库查询性能,提升整体系统效率。

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

    你可能感兴趣的文章
    Mysql连接时报时区错误
    查看>>
    MySql连接时提示:unknown Mysql server host
    查看>>
    MySQL连环炮,你扛得住嘛?
    查看>>
    mysql逗号分隔的字符串如何搜索
    查看>>
    MySQL通用优化手册
    查看>>
    Mysql通过data文件恢复
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    mysql部署错误
    查看>>
    MySQL配置信息解读(my.cnf)
    查看>>
    Mysql配置文件my.ini详解
    查看>>
    MySQL配置文件深度解析:10个关键参数及优化技巧---强烈要求的福利来咯。
    查看>>
    Mysql配置表名忽略大小写(SpringBoot连接表时提示不存在,实际是存在的)
    查看>>
    mysql配置读写分离并在若依框架使用读写分离
    查看>>
    MySQL里为什么会建议不要使用SELECT *?
    查看>>
    MySQL里的那些日志们
    查看>>
    MySQL锁
    查看>>
    MySQL锁与脏读、不可重复读、幻读详解
    查看>>
    MySQL锁机制
    查看>>
    mysql锁机制,主从复制
    查看>>