博客
关于我
MySQL执行计划解读
阅读量:802 次
发布时间: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蜜罐反制获取攻击者信息
    查看>>
    Mysql表创建外键报错
    查看>>
    mysql表格调取数据库信息_MySQL™ 参考手册(获取有关数据库和表的信息)
    查看>>
    mysql表检查分析优化
    查看>>
    WARN: Establishing SSL connection without server‘s identity verification is not recommended.
    查看>>
    MySQL视图
    查看>>
    MySQL视图
    查看>>
    Mysql视图、触发器、事务、储存过程、函数
    查看>>
    mysql视图建立MERGE算法和TEMPTABLE算法的区别(效率与表锁定问题)
    查看>>
    mysql视图,索引和存储过程
    查看>>
    mysql解压没有data_Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
    查看>>
    Mysql解压版安装
    查看>>
    Mysql设置字符编码及varchar宽度问题
    查看>>
    MySQL设置白名单限制
    查看>>
    MySQL设置远程连接
    查看>>
    MySQL详解:索引的介绍和原理分析
    查看>>
    MYSQL语句。
    查看>>
    MySQL调大sort_buffer_size,并发量一大,查询排序为啥又会变慢
    查看>>
    Mysql账号权限查询(grants)
    查看>>