当前位置: 首页 > article >正文

MySQL执行计划explain

💖简介

MySQLEXPLAIN命令是一个非常强大的工具,用于分析和优化SQL查询。它可以帮助理解MySQL是如何执行的查询语句,包括查询中使用了哪些索引、表之间的连接方式、预计需要扫描的数据行数等信息。通过这些信息,可以找出潜在的性能瓶颈,并据此对查询进行调整以提高效率。

📖基本用法

EXPLAIN [EXTENDED] SELECT ...;

SELECT ... 是想要分析的查询语句。
EXTENDED 是可选的,如果使用了它,EXPLAIN 会输出额外的信息

⭐输出字段

  • id:

表示查询中的选择标识符,每个SELECT子句都会被分配一个唯一的id。
如果查询包含嵌套或联合查询,id值会递增,数值越大优先级越高,越先被执行

  • select_type:

显示查询的类型,如SIMPLE(简单查询)PRIMARY(最外层查询)SUBQUERY(子查询)DERIVED(被驱动的SELECT子查询)UNION(使用了UNION) 等。

  • table:

指出正在访问哪张表,可能是一个别名或者派生表

  • partitions:

对于分区表,显示匹配的分区。如果表没有分区,则为NULL。

  • type:

访问类型,指示MySQL如何找到数据行。从最好到最差依次为:system > const > eq_ref > ref > range > index > all

  • system:表中只有一行记录(相当于系统表)。
  • const:针对主键或唯一索引的等值查询,最多只返回一行数据。
  • eq_ref:当使用了索引的全部组成部分,并且索引是PRIMARY KEYUNIQUE NOT NULL时使用。
  • ref:当满足索引的最左前缀规则,或者索引不是主键也不是唯一索引时发生。
  • range:仅检索指定范围的行,通常出现在BETWEEN、<、>、IN等操作中。
  • index:全索引扫描。
  • all:全表扫描。
  • possible_keys:

显示MySQL可能使用的索引列表来查找行。

  • key:
    实际被使用的索引。如果为NULL,表示没有使用索引。

  • key_len:

使用的索引长度。数值越小通常越好。

  • ref:

显示与索引比较的列或常量。

  • rows:

MySQL认为执行查询时必须检查的行数。数值越小越好。

  • filtered:

表示按表条件过滤后估计符合条件的结果所占百分比。

  • Extra:

包含额外的信息,如Using where表示使用了WHERE子句进行过滤;Using filesort表示需要额外的排序步骤。

🌟进阶用法

EXPLAIN EXTENDED:提供更多的优化信息,可以通过SHOW WARNINGS查看详细的优化过程。
EXPLAIN PARTITIONS:对于分区表,显示将访问的具体分区。
EXPLAIN ANALYZE:不仅显示执行计划,还会实际执行查询并提供时间统计信息。


结束


http://www.kler.cn/a/414231.html

相关文章:

  • Dapper简易入门
  • 【Android+多线程】IntentService 知识总结:应用场景 / 使用步骤 / 源码分析
  • 【AI绘画】Midjourney进阶:色调详解(下)
  • 【es6】原生js在页面上画矩形及删除的实现方法
  • ORB-SLAM2 ----Tracking::NeedNewKeyFrame()和Tracking::CreateNewKeyFrame()
  • 数据结构之二:表
  • vmware Ubuntu2004运行STAR-Searcher
  • 结构体详解+代码展示
  • 【Leetcode 每日一题】235. 二叉搜索树的最近公共祖先
  • cocos creator 3.8 合成大西瓜Demo 11
  • 卷积神经网络:图像特征提取与分类的全面指南
  • AIGC时代:如何快速搞定Spring Boot+Vue全栈开发
  • C#基础41-45
  • 栩熙酷科技,抖音电商优势凸显
  • 【k8s深入理解之 Scheme 补充-7】理解无版本资源、有版本资源、元数据信息等联系和区别
  • AI的魔力:如何为开源软件注入智慧,开启无限可能
  • C#并行使用及性能对比
  • 【云原生系列】迁移云上需要考虑哪些问题
  • 数据分析:转录组数据分析方法汇总(差异分析,PCA,聚类分析和功能富集分析)
  • Eclipse 创建 Java 接口
  • Unity3D ngui和ugui区别与优缺点详解
  • linux高级系统编程之进程
  • 无人机反制技术多方法实现详解
  • GitHub仓库的README添加视频播放链接和压缩视频网站推荐
  • 【MATLAB源码-第224期】基于matlab的快跳频系统仿真采用4FSK,模拟了单音干扰,宽带干扰以及部分频带干扰,输出误码率曲线以及各节点图像。
  • C++基本:const成员函数与非Const成员函数的调用