mysql explain詳解

來源:互聯網
上載者:User

標籤:io操作   詳細   doc   部分   result   排序   兩種   輸出   inf   

id: 序號;實際表示優先順序,值越大越先被執行。

 --------------------------------------------------------------

select_type

SELECT 語句的類型,可以有下面幾種。

SIMPLE:最簡單的SELECT語句,沒有使用UNION或子查詢。

PRIMARY:在巢狀查詢中是最外層的SELECT語句,在UNION查詢中是最前面的SELECT語句。

UNION:UNION中第二個以及後面的SELECT語句。

DERIVED:派生表,在FROM子句中的子查詢語句(subquery in FROM clause)。

UNION RESULT:一個UNION查詢的結果。

DEPENDENT UNION:顧名思義,首先需要滿足UNION的條件,及UNION中第二個以及後面的SELECT語句,同時該語句依賴外部的查詢。

 

部分type說明:   從好到壞
const: 最佳化成常量-主鍵在where條件列表
eq_ref: 唯一性索引掃描
ref: 非唯一性索引掃描
range: 掃描部分索引,索引範圍掃描
index: 掃描整顆索引樹
ALL: 掃描全表
-------------------------------------------------------------------------------------

Extra

Extra是EXPLAIN輸出中另外一個很重要的列,該列顯示MySQL在查詢過程中的一些詳細資料,包含的資訊很多,只選擇幾個重點的介紹下。

Using filesort:
MySQL有兩種方式可以產生有序的結果,通過使用索引或者排序操作,當Extra中出現了Using filesort 說明MySQL使用了後者,但注意雖然叫filesort但並不是說明就是用了檔案來進行排序,只要可能排序都是在記憶體裡完成的。大部分情況下利用索引排序更快,所以一般這時也要考慮最佳化查詢了。

Using temporary:
說明使用了暫存資料表,一般看到它說明查詢需要最佳化了,就算避免不了暫存資料表的使用也要盡量避免硬碟暫存資料表的使用。

Using index:
說明查詢是覆蓋了索引的,這是好事情。MySQL直接從索引中過濾不需要的記錄並返回命中的結果。這是MySQL服務層完成的,但無需再回表查詢記錄。

Using index condition
這是MySQL 5.6出來的新特性,叫做“索引條件推送”。簡單說一點就是MySQL原來在索引上是不能執行如like這樣的操作的,但是現在可以了,這樣減少了不必要的IO操作,但是只能用在二級索引上,詳情點這裡。

Using where:
使用了WHERE從句來限制哪些行將與下一張表匹配或者是返回給使用者。

mysql explain詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.