本文是对于MySQL执行计划的解析,主要解释了MySQL执行计划中的各个参数及含义。
显示这一行的数据是关于哪张表的。
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的。
如果查询是基于分区表的话, 会显示查询访问的分区。
Type表示访问类型,以下为最好的到最差的访问类型的排列 结果值最好到最差: Type:null、system、const、eq_ref、ref、range、index、ALL type要求: 一般来说,保证查询至少达到range级别; 最好能达到ref。
Null是最好的访问方式,MySQL对语句进行优化分解后,在执行阶段用不着访问表或者索引(在索引列中查询最小值)。
EXPLAIN