MySQL 中如何查看 SQL 的执行计划?

embedded/2025/2/27 17:59:40/

SQL 语句前面使用 EXPLAIN 关键字:

EXPLAIN SELECT * FROM users WHERE id = 1;

字段

含义

id

查询的序号(如果是子查询或联合查询,会有多个 id)。

select_type

查询的类型(简单查询、子查询、联合查询等)。

table

查询涉及的表名。

partitions

查询时使用的分区(如果表有分区)。

type

查询的访问类型(性能从高到低:system> const> eq_ref> ref> range> index> ALL)。

possible_keys

可能使用的索引。

key

实际使用的索引。

key_len

使用的索引长度。

ref

使用的索引与哪些列或常量进行比较。

rows

估算的扫描行数。

filtered

计算结果集占扫描行数的百分比(MySQL 5.7+)。

Extra

额外信息(如 Using whereUsing indexUsing temporary 等)。


EXPLAIN 的关键字段详解

type:表示 MySQL 如何访问数据,性能从高到低排序。

  • system:表中只有一行数据(系统表)。
  • const:通过主键或唯一索引查询,结果只有一行。
  • eq_ref:在连接查询中,主键或唯一索引被使用,返回最多一行。
  • ref:使用非唯一索引查询,返回匹配的多行。
  • range:使用索引进行范围查询(如 BETWEENIN)。
  • index:全索引扫描(比全表扫描快,但仍需遍历索引)。
  • ALL:全表扫描(性能最差)。

Extra:提供查询的额外信息

  • Using where:查询使用了 WHERE 条件。
  • Using index:使用了覆盖索引(无需回表)。
  • Using temporary:使用了临时表(常见于排序或分组)。
  • Using filesort:使用了文件排序(性能较低)。
  • Using join buffer:使用了连接缓存(多表连接时)。

如何分析 EXPLAIN 结果

通过 EXPLAIN 结果,可以优化查询:

1.检查 type

  • 目标是使用 consteq_refrefrange
  • 避免 ALL(全表扫描)。

2.检查 key

    • 确保查询使用了索引。
    • 如果没有使用索引,考虑添加合适的索引。

3.检查 rows

  • 估算的扫描行数越少越好。
  • 如果行数过多,优化查询条件或索引。

4.检查 Extra

  • 避免 Using temporaryUsing filesort
  • 尽量使用 Using index

水平有限,如有错误,欢迎指正!


http://www.ppmy.cn/embedded/167589.html

相关文章

模型压缩、量化、剪枝等技术减小模型体积,降低计算复杂度

在深度学习领域,模型压缩、量化和剪枝等技术是减小模型体积、降低计算复杂度的有效手段,以下为你详细介绍这些技术: 模型压缩 原理 模型压缩旨在通过各种方法减少模型的参数数量和计算量,同时尽可能保持模型的性能。其核心思想…

VUE向外暴露文件,并通过本地接口调用获取,前端自己生成接口获取public目录里面的文件

VUE中,如果我们想对外暴露一个文件,可以在打包之后也能事实对其进行替换,我们只需要把相关文件放置在public目录下即可,可以放置JSON,Excel等文件 比如我在这里放置一个other文件 我们可以直接在VUE中使用axios去获取…

VIP商品页面结构经常变化怎么办?

在爬取VIP商品详情时,页面结构的频繁变化是常见的挑战。为了应对这一问题,可以采取以下策略: 1. 使用稳定的选择器 在编写爬虫时,尽量选择更通用、更稳定的CSS选择器或XPath表达式,避免依赖于容易变化的元素属性。例…

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用:生成结构化PPT大纲(擅长逻辑构建与内容优化)Kimi核心作用:将文本转换为视觉化PPT(提供模板库与排版引擎) 二、操作步骤详解 1. 通…

开源RAG主流框架有哪些?如何选型?

开源RAG主流框架有哪些?如何选型? 一、开源RAG框架全景图 (一)核心框架类型对比 类型典型工具技术特征适用场景传统RAGLangChain, Haystack线性流程(检索→生成)通用问答、知识库检索增强型RAGRAGFlow, AutoRAG支持重排序、多路召回优化高精度问答、复杂文档处理轻量级…

Mysql convert函数、convert用法、字符串转数字、字符串转日期、类型转换函数

文章目录 一、语法 1.1、转换指定数据类型1.2、转换指定字符集 二、示例三、cast与convert的区别 Mysql提供了两种将值转换成指定数据类型的函数 CONVERT函数:用于将值转换为指定的数据类型或字符集CAST函数 :用于将值转换为指定的数据类型。更多内容…

电脑开机无显示的故障原因

硬件问题 电源故障 电源供应不足:电源功率无法满足电脑硬件的需求,可能导致硬件无法正常启动,尤其是在电脑配置较高且电源功率较低的情况下容易出现。电源损坏:电源内部的电路元件可能出现故障,如电容爆浆、短路等&…

Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)

仅供自学,请去支持javaGuide原版书籍。 1.Linux 1.1.概述 Linux是一种类Unix系统。 严格来讲,Linux 这个词本身只表示 Linux内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以,就有了各种 Linux 发行版&#…