企业网站如何进行seo,房屋租赁网站开发意义,台州电子商务网站开发,wordpress内容提交工具1. explain作用
使用explain可以展示出sql语句的执行计划#xff0c;再根据sql的执行计划去判断这条sql有哪些点可以进行优化#xff0c;从而让sql的效率达到最大化。
2. 执行计划各列含义
#xff08;1#xff09;id#xff1a;id列是select的序列号#xff0c;这个…1. explain作用
使用explain可以展示出sql语句的执行计划再根据sql的执行计划去判断这条sql有哪些点可以进行优化从而让sql的效率达到最大化。
2. 执行计划各列含义
1idid列是select的序列号这个sql执行过程中会执行几次select就有几个id并且id是按照select出现的顺序增长的id列的值越大优先级越高id相同则是按照执行计划列从上往下执行。 2select_type该列表示查询的类型是简单查询还是复杂查询。
simple不包含子查询和union的简单查询。 primary包含子查询的复杂查询中最外层的查询。subquery包含子查询的复杂查询中的子查询。 从下面sql执行计划中可以看出外层查询user表的类型为PRIMARYwhere后面的子查询roles表类型为SUBQUERY。 derived衍生查询查询临时表中的数据。union在union中的第二个和随后的查询。union result表示合并的结果最后的extra列中的Using temporary表示会创建一个临时表来存储合并结果。 从下面sql的执行计划可以看出第一条的类型为PRIMARY就是复杂查询中的最外层的查询。 第二条的类型为DERIVED即在from子句的子查询中的结果放到一个临时表中也就是对r1表的查询结果会衍生出一个临时表所以对r1表的查询类型为DERIVED。第三条是对r2表的查询由于是在union的后面所以查询类型为UNION。第四条则是对23条查询的合并结果当作最终的子查询结果并存放在衍生出来的临时表中。
3table该列表示当前行访问的是哪张表通常是表名或者该表的别名。 4partitions该列表示查询将匹配记录的分区。 对于非分区表该值为 NULL。
5type该列表示关联类型或访问类型。该列的值决定了这条sql的查询性能从最优到最差分别为system const eq_ref ref range index all。
system 表示整个表中只有一条记录这种情况几乎不会出现。const 表示整个表中通过该字段查找只有唯一的一条记录一般会出现在主键索引或者唯一索引的字段。 eq_ref 一般是关联查询的时候主表用于关联的索引字段在被关联的副表中有且只有唯一一条记录。被关联的副表字段一般为主键或者唯一索引字段。 ref 一般是使用普通索引进行查询查询的结果会存在多个符合条件的记录。 range 通常出现在范围查询中比如in、between、大于、小于等。使用索引来检索给定范围的行。 index 从创建的索引文件中扫描全部索引数据通常比ALL快一点。 all在磁盘从头到尾的扫描全表数据来找到所需要的数据查询速率最差。
6possible_keys该列表示在查询中可能用到的索引仅仅只是可能列出来的索引并不一定真正的使用到。如果该列为NULL则表示没有相关索引。
7key该列表示真正使用到的索引。
8key_len该列表示sql查询语句中索引使用到的字节数这个字节数并不是实际的长度而是通过计算查询中使用到的索引中的长度得出来的显示的是索引字段最大的可能长度。key_len是越小越好。
9ref该列表示在key列记录的实际使用的索引中表查找值时使用到的列或常量。常见的有const、字段名。
10rows该列表示估算的要扫描的行数注意这个并不是实际结果集的行数。
11Extra该列表示是sql查询的额外信息主要有以下几种情况Using index、Using where、Using temporary、Using filesort、Impossible where、Select tables optimized away。
Using index表示查询的列被索引覆盖索引被正确的使用想要查询的信息在索引里面可以找到不用再回表查询这个是查询性能比较高的体现。 Using where表示查询的列并没有被索引覆盖where条件后面使用的是非索引的前导列它仅仅是使用了where条件而已。 Using temporary表示使用了临时表存储中间的结果一般在进行合并查询的时候会使用临时表。 Using filesort表示文件排序说明Mysql对数据使用了外部的索引进行排序并没有使用表中的索引进行排序。 Impossible where表示where后的条件一直为false。 Select tables optimized away表示使用某些聚合函数比如 max、min来访问存在索引的某个字段时。