程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> MySQL手冊版本 5.0.20-MySQL優化(二) (1)

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

編輯:關於PHP編程

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從第一個表中讀取一條記錄,然後在第二個表中查找到對應的記錄,然後在第三個表中查找,依次類推。當所有的表都掃描完了,它輸出選擇的字段並且回溯所有的表,直到找不到為止,因為有的表中可能有多條匹配的記錄下一條記錄將從該表讀取,再從下一個表開始繼續處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved