暂无图片
MySQL执行计划解析(二)
最近更新:2022-03-11 14:21:05

本文是对于MySQL执行计划的解析,主要解释了MySQL执行计划中的各个参数及含义。

四、TABLE

显示这一行的数据是关于哪张表的。

EXPLAIN 
SELECT *
FROM   EMPLOYEE   E
      ,DEPARTMENT D
      ,CUSTOMER   C
WHERE  E.DEP_ID = D.ID
       AND E.CUS_ID = C.ID;

+----+-------------+-------+------------+--------+---------------+---------+---------+---------------+------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type   | possible_keys | key     | key_len | ref           | rows | filtered | Extra                                              |
+----+-------------+-------+------------+--------+---------------+---------+---------+---------------+------+----------+----------------------------------------------------+
|  1 | SIMPLE      | C     | NULL       | ALL    | PRIMARY       | NULL    | NULL    | NULL          |    1 |   100.00 | NULL                                               |
|  1 | SIMPLE      | E     | NULL       | ALL    | NULL          | NULL    | NULL    | NULL          |    8 |    12.50 | Using where; Using join buffer (Block Nested Loop) |
|  1 | SIMPLE      | D     | NULL       | eq_ref | PRIMARY       | PRIMARY | 4       | demo.E.dep_id |    1 |   100.00 | NULL                                               |
+----+-------------+-------+------------+--------+---------------+---------+---------+---------------+------+----------+----------------------------------------------------+
3 rows in set, 1 warning (0.04 sec)

Id完全相同,都是1,并且select_type的类型为simple,所以是对单表进行扫描,第一步执行时,操作的数据是c的,第二步在执行时,操作的数据是e的,最后执行时,操作的数据是d的。

五、Partitions

如果查询是基于分区表的话, 会显示查询访问的分区。

六、Type

Type表示访问类型,以下为最好的到最差的访问类型的排列 结果值最好到最差: Type:null、system、const、eq_ref、ref、range、index、ALL type要求: 一般来说,保证查询至少达到range级别; 最好能达到ref。

1、NULL

Null是最好的访问方式,MySQL对语句进行优化分解后,在执行阶段用不着访问表或者索引(在索引列中查询最小值)。

EXPLAIN
......