Select type&partitions (2)—mysql执行计划(四十八) 前面说了explain的table是表名,显示在前面的代表驱动表,正常select会出现不同的id,但如果子查询本来是两个select,但被优化成连接查询,就会导致是相同的id,union查询会出现临时表,id为null,这个临时表作用于去重,union all不需要去重,所以也就不需要建立临时表。
select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 ref:列与索引的比较 rows:扫描出的行数(估算的行数) filtered:按表条件过滤的行百分比 Extra:执行情况的描述和说明 sele...
子查询被转化为了物化表。 4. partitions partitions 代表分区表中的命中情况,非分区表,该项为NULL,一般情况下我们的查询语句的执行计划的partitions的列的值都是NULL。 该部分不重要,可以省略 5. type (非常重要) 执行计划的一条记录就代表着MySQL对某个表的执行查询时的访问方法,又称"访问类型",其中type列就...
uncacheable subquery**和**uncacheable union**较少使用,它们指的是在某些情况下查询结果不可缓存的特殊类型。最后,`partitions`涉及分区技术,用于将大型表分割为更小的部分,以提高查询效率。尽管本文中没有分区示例,理解分区概念对于大型数据库系统的设计和优化非常重要。
2)explain partitions:相比 explain 多了个 partitions 字段,如果查询是基于分区表的话,会显示查询将访问的分区。 ID id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。MySQL将 select 查询分为简单查询和复杂查询。复杂查询分为三类:简单子查询、派生表(from...
⑤. 我们可以使用explain extended查询出filtered字段,使用explain partitions查询出partitions字段 ②. 构建SQL坏境语句 ①. 构建好SQL坏境语句,下面将对Explain中的各个字段进行详解 # 演员表的name是一个索引字段DROP TABLE IF EXISTS `actor`;CREATE TABLE `actor` (`id` int(11) NOT NULL,`name` varchar(45...
+---+---+---+---+---+---+---+---+---+---+---+---+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +---+---+---+---+---+---+---+---+-...
mysql>EXPLAINSELECT*FROML2->UNION->SELECT*FROML3;+---+---+---+---+---+---+---+---+---+---+---+---+|id|select_type|table|partitions|type|possible_keys|key|key_len|ref|rows|filtered|Extra|+---+---+---+---+---+---+---+...
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +---+---+---+---+---+---+---+---+---+---+---+---+ | 1 | SIMPLE | L1 | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL ...
partitions 匹配的分区信息 Type 针对单表的访问方法 Possible_keys 可能用到的索引 Key 实际使用的索引 Key_len 实际使用的索引长度 Ref 当使用索引列等值查询时, 与索引列进行等值匹配的对象信息 Rows 预估需要读取的记录条数 Filtered 针对预估需要读取的记录, 经过搜索条件过滤后剩余记录条数的百分比...