MySQL手冊版本 5.0.20-MySQL最佳化(二) (1)

來源:互聯網
上載者:User

7.2.1 EXPLAIN 文法(得到SELECT 的相關資訊)


EXPLAIN tbl_name

或者:


EXPLAIN SELECT select_options

EXPLAIN 語句可以被當作 DESCRIBE 的同義字來用,也可以用來擷取一個MySQL要執行的 SELECT 語句的相關資訊。


EXPLAIN tbl_name 文法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。


當在一個 SELECT 語句前使用關鍵字 EXPLAIN 時,MYSQL會解釋了即將如何運行該 SELECT 語句,它顯示了表如何串連、串連的順序等資訊。


本章節主要講述了第二種 EXPLAIN 用法。


在 EXPLAIN 的協助下,您就知道什麼時候該給表添加索引,以使用索引來尋找記錄從而讓 SELECT 運行更快。


如果由於不恰當使用索引而引起一些問題的話,可以運行 ANALYZE TABLE 來更新該表的統計資訊,例如鍵的基數,它能幫您在最佳化方面做出更好的選擇。詳情請看"14.5.2.1 ANALYZE TABLE Syntax"。


您還可以查看最佳化程式是否以最佳的順序來串連資料表。為了讓最佳化程式按照 SELECT 語句中的表名的順序做串連,可以在查詢的開始使用 SELECT STRAIGHT_JOIN 而不只是 SELECT。


EXPLAIN 返回了一行記錄,它包括了 SELECT 語句中用到的各個表的資訊。這些表在結果中按照MySQL即將執行的查詢中讀取的順序列出來。MySQL用一次掃描多次串連(single-sweep, multi-join) 的方法來解決串連。這意味著MySQL從第一個表中讀取一條記錄,然後在第二個表中尋找到對應的記錄,然後在第三個表中尋找,依次類推。當所有的表都掃描完了,它輸出選擇的欄位並且回溯所有的表,直到找不到為止,因為有的表中可能有多條匹配的記錄下一條記錄將從該表讀取,再從下一個表開始繼續處理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.