PRIMARY和SUBQUERY 执行sql如下: explain select * from test1 t1 where t1.id = (select id from test1 t2 where t2.id=2); 1. 结果: 我们看到这条嵌套查询的sql中,最外层的t1表是PRIMARY类型,而最里面的子查询t2表是SUBQUERY类型。 DERIVED 执行sql如下: explain select t1.* from test1 t1 inner join...
2)primary:复杂查询中最外层的 select 3)subquery:包含在 select 中的子查询(不在 from 子句中)4)derived:包含在 from 子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义) 用这个例子来了解 primary、subquery 和 derived 类型 mysql> explain select (select1from actor...
4. DEPENDENT SUBQUERY 这个select-type 值是为使用子查询而定义的。下面的SQL语句提供了这个值: mysql>EXPLAINSELECTp.*->FROMparent p->WHEREp.idNOTIN(SELECTc.parent_idFROMchild c); 5. UNION 这是UNION 语句其中的一个SQL 元素。 6. UNION RESULT 这是一系列定义在UNION 语句中的表的返回结果。当sele...
3)subquery:包含在 select 中的子查询(不在 from 子句中) 4)derived:包含在 from 子句中的子查询。 MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义) 用这个例子来了解 primary、subquery 和 derived 类型 mysql>explainselect(select1fromactorwhereid=1)from(select*fromfilmwhereid=1) der;...
3)subquery:表明当前行对应的select是包含在 select 中的子查询(不在 from 子句中) 4)derived:表明当前行对应的select是包含在 from 子句中的子查询。 MySQL会创建一个临时表来存放子查询的查询结果。用如下的语句示例说明: explain select (select 1 fromt_user where user_id=1) from (select * from t_gr...
优化sql,sql可能需要多次优化才能达到索引使用的最优值 既然索引优化的第一步是使用explain,我们先全面的了解一下它。 explain介绍 先看看mysql的官方文档是怎么描述explain的: EXPLAIN可以使用于 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语句。 当EXPLAIN与可解释的语句一起使用时,MySQL将显示来自优化器的有关语句...
index_subquery:该联接类型类似于unique_subquery。可以替换IN子查询,但只适合下列形式的子查询中的非唯一索引: value IN (SELECT key_column FROM single_table WHERE some_expr)range:只检索给定范围的行,使用一个索引来选择行。index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常...
G:unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值 H:index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。 I:range:索引范围扫描,常见于使用>,<,is null,between ,in ,like等运算符的查询中。
unique_subquery:该类型和eq_ref类似,但是使用了IN查询,且子查询是主键或者唯一索引 index_subquery:和unique_subquery类似,只是子查询使用的是非唯一索引 range:范围扫描,表示检索了指定范围的行,主要用于有限制的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN...
subquery 是 SQL 在 select 或者 where 里包含的子查询,被标记为该值。 dependent subquery:子查询中的第一个 select,取决于外侧的查询,一般是 in 中的子查询。 union 是 SQL 在出现在 union 关键字之后的第二个 select ,被标记为该值;若 union 包含在 from 的子查询中,外层select 被标记为 derived。