SQL之EXPLAIN文法詳解(1)

來源:互聯網
上載者:User

1、EXPLAIN tbl_name

EXPLAIN tbl_name是DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name的一個同義字。

2、EXPLAIN [EXTENDED] SELECT select_options

如果在SELECT語句前放上關鍵詞EXPLAIN,MySQL將解釋它如何處理SELECT,提供有關表如何聯結和聯結的次序。

藉助於EXPLAIN,可以知道什麼時候必須為表加入索引以得到一個使用索引來尋找記錄的更快的SELECT。

還可以知道最佳化器是否以一個最佳次序聯結表。為了強制最佳化器讓一個SELECT語句按照表命名順序的聯結次序,語句應以STRAIGHT_JOIN而不只是SELECT開頭。

EXPLAIN為用於SELECT語句中的每個表返回一行資訊。表以它們在處理查詢過程中將被MySQL讀入的順序被列出。MySQL用一遍掃描多次聯結(single-sweep multi-join)的方式解決所有聯結。這意味著MySQL從第一個表中讀一行,然後找到在第二個表中的一個匹配行,然後在第3個表中等等。當所有的表處理完後,它輸出選中的列並且返回表清單直到找到一個有更多的匹配行的表。從該表讀入下一行並繼續處理下一個表。

當使用EXTENDED關鍵字時,EXPLAIN產生附加資訊,可以用SHOW WARNINGS瀏覽。該資訊顯示最佳化器限定SELECT語句中的表和列名,重寫並且執行最佳化規則後SELECT語句是什麼樣子,並且還可能包括最佳化過程的其它註解。

EXPLAIN的每個輸出行提供一個表的相關資訊,並且每個行包括下面的列:

id:SELECT識別符。這是SELECT的查詢序號。

select_type:SELECT類型。

table:表名

type:聯結類型


相關文章

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.