MySQL EXPLAIN 命令: 查看查询执行计划

MySQLEXPLAIN 命令可以查看SELECT语句的执行计划,是 MySQL 查询优化的必备工具。

通过执行计划可以了解查询方式、索引使用情况、需要扫描的数据量以及是否需要临时表或排序操作等信息。

我们需要分析执行计划对查询进行有的放矢的优化。

需要注意:

EXPLAIN不考虑触发器、存储过程或用户自定义函数对查询的影响

EXPLAIN不考虑缓存

EXPLAIN只能分析执行计划,不能显示存储引擎在执行查询过程中进行的操作

部分统计信息是估算的,并非精确值

本文基于 MySQL 5.6 版本。

EXPLAIN SELECT * FROM `user` JOIN `post` ON `user`.id = `post`.uid WHERE user.`created_at` < '2018-10-01 00:00:00' AND `post`.status = 1;

结果:

id select_type table type possible_keys key key_len ref rows Extra
1   SIMPLE   user   range   PRIMARY,idx_created_at   idx_created_at   7   null   19440   Using index condition; Using where; Using temporary; Using filesort  
1   SIMPLE   post   ref   idx_uid,idx_status   idx_uid   8   user.id   1   Using where  

EXPLAIN 的行数为查询涉及的表数, 结果各列的含义为:

id: 查询的唯一标识

select_type: 查询的类型

table: 查询的表, 可能是数据库中的表/视图,也可能是 FROM 中的子查询

type: 搜索数据的方法

possible_keys: 可能使用的索引

key: 最终决定要使用的key

key_len: 查询索引使用的字节数。通常越少越好

ref: 查询的列或常量

rows: 需要扫描的行数,估计值。通常越少越好

extra: 额外的信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxyp.html