explain的select_type

分析sql的時候,我們會用explain。

explain的字段:


第一個字段是id。id越大越先執行,id相同從上至下執行。

我們主要講講select_type。

我們加上一張location表,並且在tbl_dept中添加location_id字段:



首先是簡單查詢:


直接select * from的select_type就是SIMPLE

然後是子查詢和主要查詢:


tbl_emp和location都是SUBQUERY

而tbl_dept卻是PRIMARY。它的意思是它是主要查詢,就是最外層的查詢,最後一個輪到它。

看這條sql:

出現了衍生表,或者說是虛表:from (select .....)

mysql認爲這樣的查詢類型就是DERIVED

+----+-------------+------------+------------+--------+---------------+------+---------+------+------+----------+----------------+
| id | select_type | table      | partitions | type   | possible_keys | key  | key_len | ref  | rows | filtered | Extra          |
+----+-------------+------------+------------+--------+---------------+------+---------+------+------+----------+----------------+
|  1 | PRIMARY     | <derived2> | NULL       | system | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL           |
|  1 | PRIMARY     | t1         | NULL       | ALL    | NULL          | NULL | NULL    | NULL |    7 |   100.00 | NULL           |
|  2 | DERIVED     | NULL       | NULL       | NULL   | NULL          | NULL | NULL    | NULL | NULL |     NULL | No tables used |
+----+-------------+------------+------------+--------+---------------+------+---------+------+------+----------+----------------+

<derived2>表示是從id爲2的表衍生的。

當我們使用union的時候:

還會出現UNIONUNION RESULT兩個select_type。

它們分別表示聯合查詢和聯合查詢的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章