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

    你可能感兴趣的文章
    【Flink】Flink 2023 Flink易用性和稳定性在Shopee的优化-视频笔记
    查看>>
    Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
    查看>>
    netty——bytebuf的创建、内存分配与池化、组成、扩容规则、写入读取、内存回收、零拷贝
    查看>>
    netty——Channl的常用方法、ChannelFuture、CloseFuture
    查看>>
    netty——EventLoop概念、处理普通任务定时任务、处理io事件、EventLoopGroup
    查看>>
    netty——Future和Promise的使用 线程间的通信
    查看>>
    netty——Handler和pipeline
    查看>>
    Vue输出HTML
    查看>>
    netty——黏包半包的解决方案、滑动窗口的概念
    查看>>
    Netty中Http客户端、服务端的编解码器
    查看>>
    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
    查看>>
    Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
    查看>>
    Netty中的组件是怎么交互的?
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    netty之 定长数据流处理数据粘包问题
    查看>>
    Netty事件注册机制深入解析
    查看>>
    netty代理
    查看>>
    Netty入门使用
    查看>>
    netty入门,入门代码执行流程,netty主要组件的理解
    查看>>
    Netty原理分析及实战(一)-同步阻塞模型(BIO)
    查看>>