🗣 Wd提问: MySQL执行计划
🤖 Ai回答: MySQL的执行计划(Execution Plan)是数据库优化器为SQL查询生成的执行步骤,用于展示查询如何被处理。通过分析执行计划,可以优化查询性能,减少资源消耗。以下是关于MySQL执行计划的详细说明:
一、如何查看执行计划
1、EXPLAIN 关键字
sql
EXPLAIN SELECT * FROM table WHERE column = 'value';
或者使用 `DESCRIBE` 简写:
sql
DESCRIBE SELECT * FROM table WHERE column = 'value';
2、ANALYZE 关键字(MySQL 5.6+)
sql
ANALYZE SELECT * FROM table WHERE column = 'value';
返回更详细的统计信息(如实际扫描行数)。
3、SHOW WARNINGS
执行查询后,使用 `SHOW WARNINGS` 查看优化器警告信息。
二、执行计划字段解析
| 字段 | 含义 |
| id | 查询块的标识符,相同值表示同一层级的查询块。 |
| select_type | 查询类型(SIMPLE/PRIMARY/SUBQUERY/DERIVED等)。 |
| table | 当前操作的表名。 |
| partitions | 涉及的分区(仅对分区表有效)。 |
| type | 访问类型(ALL/INDEX/range/ref/equal_ref/const/system/null)。 |
| possible_keys | 可能使用的索引列表。 |
| key | 实际使用的索引名称。 |
| key_len | 使用的索引长度(单位:字节)。 |
| ref | 连接时使用的列或常量。 |
| rows | 预估扫描的行数。 |
| filtered | 行过滤百分比(例如:90% 表示过滤掉10%的数据)。 |
| Extra | 其他信息(如Using index/Using temporary/Using filesort等)。 |
三、关键字段分析
1、type(访问类型)
最佳到最差:
`system const eq_ref ref fulltext ref_or_null index_merge unique_subquery index_subquery range index ALL`
常见问题:
`ALL`:全表扫描(性能差)。
`index`:索引全扫描(优于全表扫描,但仍有改进空间)。
2、Extra 列
Using index:覆盖索引(仅从索引中获取数据,无需回表)。
Using where:使用WHERE条件过滤数据。
Using temporary:创建临时表(如GROUP BY未使用索引)。
Using filesort:磁盘排序(性能差,应尽量避免)。
3、rows 和 filtered
`rows` 越小越好,`filtered` 接近100%表示过滤效果好。
四、执行计划优化技巧
1、检查索引使用
确保 `key` 不为空,且 `type` 为 `ref` 或更高。
避免隐式转换(如 `WHERE column = '1'` vs `column = 1`)。
2、覆盖索引
将常用查询字段添加到联合索引中,减少回表次数。
sql
CREATE INDEX idx ON table (col1, col2);
3、避免临时表和文件排序
优化GROUP BY和ORDER BY,使用索引或增加内存参数(如 `sort_buffer_size`)。
4、调整连接顺序
对于多表JOIN,将大表放在后面,小表放在前面。
5、使用直方图统计信息(MySQL 8.0+)
sql
ANALYZE TABLE table_name UPDATE HISTOGRAMS;
五、示例分析
sql
EXPLAIN SELECT * FROM users WHERE age 20 AND city = 'Beijing';
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|
| 1 | SIMPLE | users | NULL | ref | idx_age_city | idx_age_city | 767 | const | 100 | 50.00 | Using where |
分析:
`type: ref` 表示使用了索引 `idx_age_city`。
`key_len: 767` 表示索引长度(假设 `city` 是VARCHAR(255))。
`Extra: Using where` 表示还需过滤 `age 20` 条件。
六、常见问题与解决
1、全表扫描(type: ALL)
解决:添加索引或优化查询条件。
2、临时表(Using temporary)
解决:为GROUP BY或ORDER BY字段创建索引。
3、文件排序(Using filesort)
解决:为ORDER BY字段创建索引,或增加 `sort_buffer_size`。
七、工具推荐
pt-query-digest:分析慢查询日志。
MySQL Workbench:图形化查看执行计划。
sys schema:提供优化视图(如 `sys.x$schema_table_statistics_with_buffer`)。
通过分析执行计划,可以快速定位查询瓶颈,并针对性地优化索引、SQL语句或配置参数,显著提升数据库性能。
📣 商家广告:





0
IP地址: 204.209.176.1
搜索次数: 0
提问时间: 2025-11-06 01:37:01
🛒 域名购买:
7773.com.cn
2226.com.cn
836.net.cn
wzsx.net
qz.gs
bc0.cn
gu.cx
pxks.cn
xuanhuo.com.cn
jldj.cn
❓️ 热门提问:
安畅idc
30位子网掩码多少ip
站群API接口
linux本地云服务器
dj域名
永久vps服务器
远程服务器批量管理
网上交易
电脑主机 报价
申请 域名
豌豆Ai站群搜索引擎系统
🌐 域名评估:
aaaa.gx.cn
mowv.cn
z-o.net
xgoi.cn
yu8.mo.cn
723.net.cn
oohg.cn
evtol.fan
cp.cx
niu.com
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
搜索引擎导航
한국 검색 엔진 순위
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。