EXPLAIN命令的输出是一个表格,其中每一行表示查询中的一个步骤。以下是EXPLAIN输出的常见列及其说明: id: 查询中每个选择表的标识符。id值相同的行表示这些行是按顺序执行的;id不同的行表示这些行是嵌套子查询或联合查询。 select_type: 查询类型,可以是SIMPLE(简单查询,不包括子查询或联合查询),PRIMARY(主查询),...
SIMPLE:简单的 select 查询,不包含子查询或者 UNION PRIMARY:复杂查询中最外层查询,比如使用 union 或 union all 时,id 为 1 的记录 select_type 通常是 primary SUBQUERY:指在 select 语句中出现的子查询语句,结果不依赖于外部查询(不在 from 语句中) DEPENDENT SUBQUERY:指在 select 语句中出现的查询语句,结果...
explain select * from t_demo where c1='d1'and c2='d2' and c3='d3'; explain select * from t_demo where c2='d2'and c1='d1' and c3='d3'; explain select * from t_demo where c3='d3'and c1='d1' and c2='d3'; 几个Sql表现一致 type=ref,ref=const,const,const 执行常量等...
select_type: SIMPLE table: film type: const possible_keys: PRIMARY key: PRIMARY key_len: 2 ref: const rows: 1 Extra: 1 row in set (0.02 sec) 注释:如果上表中film表中只有一行数据,那么type就是system。 type = NULL,MYSQL不用访问表或者索引就直接能到结果。 mysql> explain select 1 from du...
explain select * from employees where name = 'zhangsan' explain结果 image-20230120121225512 现在,可以简单解读以下其中几个列 1、select_type: 查询类型,SIMPLE:简单查询 2、table: 查询的表 3、possible_keys: 执行该sql可能会用的索引,注意是可能,该列意义不大。
1、type=ALL,全表扫描,MySQL遍历全表来找到匹配行 一般是没有where条件或者where条件没有使用索引的查询语句 EXPLAIN SELECT * FROM customer WHERE active=0; 2、type=index,索引全扫描,MySQL遍历整个索引来查询匹配行,并不会扫描表 一般是查询的字段都有索引的查询语句 ...
EXPLAINSELECT*FROMs1WHEREkey1IN(SELECTkey1FROMs2)ORkey3='a'; 1. 如果包含子查询的查询语句不能欧转为对应的semi-join 的形式,并且该子查询是相关子查询,则该子查询的第一个 SELECT 关键字代表的那个查询的select_type 就是DEPENDENT SUBQUERY。
## 一、了解 select_type 和 子查询 物化视图 MySQL 再次研究 MySQL EXPLAIN type列的解释和测试 type列 其实很关键。 解释如下: type列这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行。依次从最优到最差分别为:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge >...
我们在使用SQL语句查询表数据时,提前用explain进行语句分析是一个非常好的习惯。通过explain输出sql的详细执行信息,就可以针对性地进行sql优化。今天我们来分析一下,在explain中11种不同type代表的含义以及其应用场景。1,system 应用场景:表中只有一条数据,且存储引擎可以准确的统计到这条数据。system一般出现在My...
(1)SIMPLE 简单的SELECT语句(不包括UNION操作或子查询操作)(2)PRIMARY/UNION PRIMARY:查询中最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION)UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句没有依赖关系)(3)DEPENDENT ...