天天看點

(02)執行計劃

1. explain文法

<code>explain select ...;</code>

執行計劃大緻包含以下資訊

(02)執行計劃

2. 常用屬性

1、如果id相同,那麼執行順序從上到下 2、如果id不同,值越大優先級越高,越先被執行 3、id相同和不同的都存在,相同的可以認為是一組,從上往下順序執行,在所有組中,id值越大,優先級越高,越先執行

select_type

說明

SIMPLE

簡單查詢,查詢中不包含子查詢或者UNION

PRIMARY

查詢中若包含任何複雜的子部分,最外層查詢則被标記為PRIMARY

SUBQUERY

在SELECT或WHERE清單中包含了子查詢,該子查詢被标記為SUBQUERY

DERIVED

在FROM清單中包含的子查詢被标記為DERIVED(衍生)

UNION

若第二個SELECT出現在UNION之後,則被标記為UNION。若UNION包含在 FROM子句的子查詢中,外層SELECT将被标記為DERIVED

UNION RESULT

從UNION表擷取結果的SELECT被标記為 UNION RESULT

對應行正在通路哪一個表,表名或者别名

type是通路類型,效率從最好到最壞依次是:const&gt;ref&gt;range&gt;index&gt;all。一般情況下,得保證查詢至少達到range級别,最好能達到ref

type

all

周遊全表以找到比對的行,一般情況下出現這樣的sql語句而且資料量比較大的話那麼就需要進行優化。

index

隻周遊索引樹。這個比all的效率要好

range

表示利用索引查詢的時候限制了範圍,在指定範圍内進行查詢,這樣避免了index的全索引掃描,适用的操作符: =, &lt;&gt;, &gt;, &gt;=, &lt;, &lt;=, IS NULL, BETWEEN, LIKE, or IN()

ref

非唯一性索引掃描,傳回比對某個單獨值的所有行

const

表示通過索引一次就找到了,const用于查找primary key 或者 unique索引。因為隻需比對一行資料,所有很快。

顯示可能在這張表中使用到的索引,一個或多個。

注意:是列出可能使用到的索引

在這張表中實際使用到的索引,如果為null,則沒有使用索引

執行查詢時,估算的找到所需的記錄需要讀取的行數

Extra

Using index

此值表示mysql将使用覆寫索引,以避免通路表。

Using filessort

表示使用檔案排序,說明order by 沒有走索引

Using temporary

對查詢結果排序時會使用臨時表

Using where

Using where的作用隻是提醒我們MySQL将用where子句來過濾結果集

繼續閱讀