Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL EXPLAIN排查

MySQL EXPLAIN排查问题指南(附详细示例)

作者:花开半夏有落时

EXPLAIN是MySQL提供的一个非常有用的命令,它能帮助我们理解MySQL是如何执行SQL查询的,这篇文章主要介绍了MySQL EXPLAIN排查问题的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

概述

MySQL 的 EXPLAIN 命令用于分析 SQL 查询的执行计划(Execution Plan),它可以输出查询如何被优化器处理,包括表扫描方式、索引使用、连接顺序、行数估计等。通过分析 EXPLAIN 的输出(如 id、select_type、type、possible_keys、key、rows、Extra 等字段),可以排查查询性能问题,帮助优化慢查询、减少资源消耗。EXPLAIN 一般能排查以下类型的问题:

EXPLAIN 不能直接排查硬件问题(如 CPU/内存不足)或锁争用,但能间接指出查询效率瓶颈。以下是多个例子,每个例子包括问题描述、EXPLAIN 输出示例、业务场景,以及优化建议。例子基于常见 MySQL 场景,假设使用 InnoDB 引擎。

示例详解

示例 1: 全表扫描(未使用索引)

- id: 1
select_type: SIMPLE
table: users
type: ALL
possible_keys: NULL
key: NULL
rows: 1000000
Extra: Using where

这里 type 为 ALL,表示全表扫描;rows 为 1000000,表示扫描了百万行。

示例 2: 低效连接顺序(大表驱动小表)

- id: 1
select_type: SIMPLE
table: large_orders (大表,100万行)
type: ALL
possible_keys: NULL
key: NULL
rows: 1000000
Extra: NULL
id: 1
select_type: SIMPLE
table: small_users (小表,1万行)
type: ref
possible_keys: idx_user_id
key: idx_user_id
rows: 1
Extra: Using where

这里大表 large_orders 先扫描,导致效率低。

示例 3: 子查询未优化(多次执行子查询)

- id: 1
select_type: PRIMARY
table: products
type: ALL
rows: 50000
Extra: Using where
id: 2
select_type: SUBQUERY
table: inventory
type: ALL
rows: 10000
Extra: NULL

子查询独立执行,可能被调用多次。

示例 4: 文件排序问题(缺少排序索引)

id: 1
select_type: SIMPLE
table: logs
type: ref
possible_keys: idx_date
key: idx_date
rows: 200000
Extra: Using where; Using fileso

Extra 中有 Using filesort,表示排序在磁盘上进行。

示例 5: 使用临时表(GROUP BY 低效)

id: 1
select_type: SIMPLE
table: sales
type: ALL
rows: 300000
Extra: Using temporary; Using file

Extra 有 Using temporary,表示创建了临时表。

示例 6: 回表查询(非覆盖索引)

id: 1
select_type: SIMPLE
table: employees
type: ref
possible_keys: idx_dept
key: idx_dept
key_len: 4
rows: 5000
Extra: Using index condition

key_len 短,表示只用了部分索引,需要回表取其他列。

总结

通过这些例子,可以看到 EXPLAIN 是优化 MySQL 查询的核心工具。在实际业务中,结合慢查询日志(slow log)和 SHOW STATUS 检查全局性能,能更全面排查问题。如果查询复杂,建议使用 EXPLAIN ANALYZE(MySQL 8.0+)获取实际执行统计。

到此这篇关于MySQL EXPLAIN排查问题指南的文章就介绍到这了,更多相关MySQL EXPLAIN排查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文