EXPLAIN 是 MySQL 查询优化的"X 光机"。一条 SQL 跑得慢,不猜、不试,先 EXPLAIN 一把,执行计划一目了然。本文从 12 个字段逐个拆解,配合真实案例与原理图解,带你从"看懂"到"能优化"。
一、EXPLAIN 是什么
当你对一条 SELECT 语句加上 EXPLAIN 前缀时,MySQL 不会真正执行这条 SQL,而是返回一个"执行计划"——它告诉你 MySQL 打算怎么走索引、扫描多少行、是否用到临时表等。
2026/7/3大约 13 分钟
EXPLAIN 是 MySQL 查询优化的"X 光机"。一条 SQL 跑得慢,不猜、不试,先 EXPLAIN 一把,执行计划一目了然。本文从 12 个字段逐个拆解,配合真实案例与原理图解,带你从"看懂"到"能优化"。
当你对一条 SELECT 语句加上 EXPLAIN 前缀时,MySQL 不会真正执行这条 SQL,而是返回一个"执行计划"——它告诉你 MySQL 打算怎么走索引、扫描多少行、是否用到临时表等。
上午 10 点,618 大促正在如火如荼进行,你收到钉钉告警:订单库慢查询数从每分钟 5 条飙升到 2000 条,数据库 CPU 从 30% 跳到 90%,接口 P99 从 50ms 涨到 3000ms。用户开始在 App 上看到加载转圈。这是 DBA 和开发面临的最紧张场景之一——慢查询突增。
慢查询突增往往不是"突然出现了慢 SQL",而是"原来快的 SQL 突然变慢了"。理解触发因素是快速定位的前提。
MySQL是世界上最流行的开源关系型数据库,它为Web应用提供了稳定可靠的数据存储方案。
本文系统梳理了MySQL的核心概念和最佳实践,是后端开发者的必备知识。
没有索引时,MySQL 查找一条记录需要全表扫描(从头到尾扫一遍)。对于 1000 万行的表,这意味着扫描 1000 万行数据。
有索引时,MySQL 通过 B+ 树查找,只需要 3-4 次磁盘 I/O 就能找到目标数据。
类比: 索引就像字典的目录。没有目录,找一个字得翻完整本字典;有目录,先查目录定位到页码,直接翻到那一页。