mysql查看执行计划,分析查询的性能瓶颈

首页 2025-10-13 09:49:37


在 MySQL 中,你可以使用 EXPLAIN 或 EXPLAIN ANALYZE 命令查看 SQL 语句的执行计划,分析查询的性能瓶颈。

基本用法

在 SQL 语句前加上 EXPLAIN 关键字即可:
sql
EXPLAIN SELECT * FROM users WHERE age > 30;
 
如果需要更详细的执行信息(包括实际执行时间),可以使用 EXPLAIN ANALYZE(MySQL 8.0+ 支持):
sql
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
 

执行计划主要字段说明

执行计划结果包含多个字段,关键字段含义如下:
  1. type:表示连接类型,性能从好到差依次为:
    • system > const > eq_ref > ref > range > index > ALL
    • 尽量优化到 range 或更好,避免 ALL(全表扫描)
  2. key:实际使用的索引名称,若为 NULL 表示未使用索引
  3. rows:预估需要扫描的行数,值越小越好
  4. Extra:额外信息,常见重要值:
    • Using index:使用了覆盖索引,性能好
    • Using where:使用了 WHERE 过滤
    • Using filesort:需要额外排序,性能差
    • Using temporary:使用了临时表,性能差

示例

查看一个关联查询的执行计划:
sql
EXPLAIN
SELECT u.name, o.order_no
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.age > 25;
 
通过分析执行计划的 typekeyrows 等字段,可以判断是否需要添加索引、优化 SQL 结构或调整表设计来提升查询性能。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密