Select type&partitions (2)—mysql执行计划(四十八)

2023-02-02 00:00:00 查询 的是 临时 物化 外层

前面说了explain的table是表名,显示在前面的代表驱动表,正常select会出现不同的id,但如果子查询本来是两个select,但被优化成连接查询,就会导致是相同的id,union查询会出现临时表,id为null,这个临时表作用于去重,union all不需要去重,所以也就不需要建立临时表。

Select type

我们都知道sql里会包含若干个select,每个select代表一个小的查询语句,每个select的from都可以关联若干张表,每张表对应执行计划输出一条数据,对于同一个select下面,id是相同的。

Mysql又为每个select定义了type,取名为select type,这样就知道每个select扮演什么样的角色。

Simple

查询语句不含包子查询或者union的都算simple类型,比方说下面的单表查询就是simple

mysql> EXPLAIN SELECT * FROM s1;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | s1    | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 9688 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

相关文章