您现在的位置是:网站首页> 内容页

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

  • vip:drfvip.com
  • 2019-03-10
  • 447人已阅读
简介MySQL的EXPLAIN命令可以查看SELECT语句的执行的计划,是MySQL查询优化的必备工具。通过执行计划可以了解查询方式、索引使用情况、需要扫描的数据量以及是否需要临

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

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

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

需要注意:

EXPLAIN不考虑触发器、存储过程或用户自定义函数对查询的影响EXPLAIN不考虑缓存EXPLAIN只能分析执行计划,不能显示存储引擎在执行查询过程中进行的操作部分统计信息是估算的,并非精确值

本文基于 MySQL 5.6 版本。

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

结果:

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEuserrangePRIMARY,idx_created_atidx_created_at7null19440Using index condition; Using where; Using temporary; Using filesort
1SIMPLEpostrefidx_uid,idx_statusidx_uid8user.id1Using where

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

id: 查询的唯一标识select_type: 查询的类型table: 查询的表, 可能是数据库中的表/视图,也可能是 FROM 中的子查询type: 搜索数据的方法possible_keys: 可能使用的索引key: 最终决定要使用的keykey_len: 查询索引使用的字节数。通常越少越好ref: 查询的列或常量rows: 需要扫描的行数,估计值。通常越少越好extra: 额外的信息

select type

文章评论

Top