公共交通公司网站建设方案,网页制作简单教程,网站模板制作流程,无锡君通科技服务有限公司概述
MySQL 的 explain 命令#xff0c;主要用于查看实际查询过程中的一些执行细节#xff08;执行计划#xff09;#xff0c;也是查看优化器决定如何执行查询的主要方法
explain 使用示例
explain 的使用也很简单#xff0c;在 select 语句之前增加 explain 关键字再…概述
MySQL 的 explain 命令主要用于查看实际查询过程中的一些执行细节执行计划也是查看优化器决定如何执行查询的主要方法
explain 使用示例
explain 的使用也很简单在 select 语句之前增加 explain 关键字再执行整个语句即可。explain 的使用示例如下所示
-- 在 select 语句前增加 explain 关键字即可
explain select id, name, age, register_date from user where name 小美 and age 22 and register_date 2015-03-05最终返回的数据如下所示
注意如果在查询语句的 from 子句中不包含子查询的情况下使用 explain 命令并不会真正地执行查询但是如果包含了那么 explain 仍然会执行子查询并将子查询的查询结果放在临时表中。
explain 返回字段介绍
使用 explain 命令之后将会返回优化器给这条查询语句制定的执行计划相关信息这些信息里面主要包含以下的一些字段
id查询子句的执行顺序值越大越先执行相等的情况下排在前面的先执行select_type查询类型一共有三个取值 PRIMARY代表的是复杂查询中最外层的 select 语句DERIVED代表的是 from 后面的子查询叫衍生表或者派生表SUBQUERY代表的是 select 中的子查询 table表示数据从哪张表或者哪个查询子句查询出来partitions表示数据从哪个分区表中查询出来的小知识一张表底层是由一个或多个分区表组成的不同的数据可能会放到不同的分区表上type表示关联类型或访问类型即 MySQL 决定如何查找表中的行以及查找数据行记录的大概范围。性能从最优到最差分别为 null为空时表示 MySQL 能在优化阶段分解查询语句在执行阶段用不着再访问表或索引。例如从表中查询最小的主键值system当查询的表中只有一条数据时const用于主键或唯一索引键的列与常数进行比较时eq_ref使用了主键或唯一索引的全部部分被连接使用时最多只会返回一条符合条件的记录。range通常出现在范围查找中使用索引来检索给定范围的行index从二级索引的第一个叶子节点开始扫描一直到最后一个叶子节点ALL从主键索引的第一个叶子节点开始扫描一直到最后一个叶子节点一般来说查询最好能达到 ref 级别最低要达到 range 级别 posiible_keys查询过程中可能会被使用到的索引key实际使用的索引。有可能 posiible_keys 不为空但是 key 为空因为 MySQL 最终会根据实际情况来判断是否使用索引如果使用索引的代价比不使用索引的代价还大那么 MySQL 将不会使用索引key_len显示了 MySQL 使用的索引字段长度由这个值可以确定使用索引的部分ref查询字段的比较值const 常量或者具体的列的名称rowsMySQL 预估的要扫描的行数extra一些额外信息 Using index在符合使用覆盖索引的场景情况下Using where使用了 where 语句且要比较的列上没有索引Using index condition查询的列没有完全被索引覆盖Using temporary查询过程中使用了临时表Using filesort使用外部排序而非索引排序。如果数据较小时将在内存排序否则需要在磁盘完成排序Select tables optimized away使用某些聚合函数比如max、min来访问存在索引的某个字段时结果直接可以用索引上获得