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

如何查看MySQL 的执行计划?

MySQL 的执行计划(Execution Plan)是 SQL 性能调优的核心工具。它展示了 MySQL 优化器为执行一条 SQL 语句所选择的详细步骤和策略。读懂执行计划,就能定位查询瓶颈,从而进行有效优化。

一、如何获取执行计划?

使用 EXPLAIN 关键字,只需将其加在你的 SQL 语句之前即可。

-- 查看 SELECT 语句的执行计划
EXPLAIN SELECT * FROM employees WHERE last_name = 'Smith';-- 查看 INSERT/UPDATE/DELETE 语句的执行计划(了解其如何查询数据)
EXPLAIN UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;-- MySQL 8.0+ 支持更详细的 ANALYZE 命令,会实际执行语句并统计耗时
EXPLAIN ANALYZE SELECT * FROM employees WHERE last_name = 'Smith';

二、执行计划详解:各字段含义

EXPLAIN 命令的输出包含以下核心字段。理解它们是读懂执行计划的关键。

字段 含义 说明
id 查询序号 标识 SELECT 子句的执行顺序。相同 id 从上到下执行;不同 id,id 值越大优先级越高。
select_type 查询类型 表示查询的复杂度(如简单查询、子查询、联合查询等)。
table 访问的表 显示这一步访问的是哪个表,有时是衍生表(如 <derived2>)。
partitions 匹配的分区 如果表定义了分区,这里显示命中了哪些分区。
type 访问类型 极其重要!表示如何查找数据,从好到坏:system > const > eq_re
http://www.xdnf.cn/news/18728.html

相关文章:

  • Spring Boot 3为何强制要求Java 17?
  • JavaScript 性能优化实战技术文章大纲
  • Games 101 第四讲 Transformation Cont(视图变换和投影变换)
  • 深入剖析结构体内存对齐
  • 边缘计算服务器EMI滤波器 故障分析与解决思路
  • 【LeetCode 热题 100】300. 最长递增子序列——(解法一)记忆化搜索
  • C++ 20: Concepts 与Requires
  • 链表-23.合并K个升序链表-力扣(LeetCode)
  • Qt从qmake迁移到cmake的记录
  • Spring Boot 整合网易163邮箱发送邮件实现找回密码功能
  • PHP - 线程安全 - 疑问与答案
  • PyQt6 进阶篇:构建现代化、功能强大的桌面应用
  • uniApp对接实人认证
  • Clustering Enabled Wireless Channel Modeling Using Big Data Algorithms
  • 【前端debug调试】
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘arviz’问题
  • 网站速度慢?安全防护弱?EdgeOne免费套餐一次性解决两大痛点
  • chapter05_从spring.xml读取Bean
  • 完整实验命令解析:从集群搭建到负载均衡配置
  • Java:类及方法常见规约
  • Unity中删除不及时的问题
  • 牛客面经2 京东社招-002
  • PyTorch框架之图像识别模型与训练策略
  • 25.深入对象
  • 寻找AI——高保真还原设计图生成App页面
  • 华为/思科/H3C/锐捷操作系统操作指南
  • 鸿蒙应用网络开发实战:HTTP、WebSocket、文件下载与网络检测全攻略
  • 微信小程序和uni-app面试问题总结
  • 网络模型深度解析:CNI、Pod通信与NetworkPolicy
  • Spring Boot 实时广播消息