EXPLAIN SELECT ……变体:<strong>1</strong>. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 <strong>2</strong>. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN
执行计划包含的信息

包含一组数字,表示查询中执行select子句或操作表的顺序

id相同,执行顺序由上至下

如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行






range访问类型的不同形式的索引访问性能差异

d.ref:非唯一性索引扫描,返回匹配某个单独值的所有行。常见于使用非唯一索引即唯一索引的非唯一前缀进行的查找












TIPS:覆盖索引(Covering Index) MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引称为 覆盖索引(Covering Index) 注意:如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降 b.Using where 表示MySQL服务器在存储引擎受到记录后进行“后过滤”(Post-filter),如果查询未能使用索引,Using where的作用只是提醒我们MySQL将用where子句来过滤结果集

c.Using temporary 表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询


d.Using filesort MySQL中无法利用索引完成的排序操作称为“文件排序”




本文是我从简朝阳推荐的ppt转换为网页版的,原ppt下载:下载地址
原文链接 http://isky000.com/database/mysql-explain-detail
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号