EXPLAIN
語句提供有關 MySQL 如何執行語句的資訊
當
EXPLAIN
與可解釋的語句一起使用時,MySQL 會顯示最佳化工具提供的語句執行計畫相關資訊。也就是說,MySQL 會解釋它將如何處理語句,包括有關資料表如何聯結以及依何順序聯結的資訊。有關使用EXPLAIN
來取得執行計畫資訊的資訊,請參閱 第 10.8.2 節,「EXPLAIN 輸出格式」。當
EXPLAIN
與FOR CONNECTION
而不是可解釋的語句一起使用時,它會顯示具名連線中執行的語句的執行計畫。請參閱 第 10.8.4 節,「取得具名連線的執行計畫資訊」。connection_id
對於
SELECT
語句,EXPLAIN
會產生額外的執行計畫資訊,可以使用SHOW WARNINGS
顯示。請參閱 第 10.8.3 節,「擴充的 EXPLAIN 輸出格式」。EXPLAIN
對於檢查涉及分割資料表的查詢很有用。請參閱 第 26.3.5 節,「取得有關分割的資訊」。可以使用
FORMAT
選項來選擇輸出格式。TRADITIONAL
以表格格式呈現輸出。如果沒有FORMAT
選項,則這是預設值。JSON
格式以 JSON 格式顯示資訊。
藉由 EXPLAIN
的協助,您可以檢視應將索引新增至表格的哪些位置,以便透過使用索引來尋找資料列,進而更快執行陳述式。您也可以使用 EXPLAIN
來檢查最佳化工具是否以最佳順序聯結表格。若要提示最佳化工具使用與 SELECT
陳述式中表格名稱順序相對應的聯結順序,請以 SELECT STRAIGHT_JOIN
而非僅 SELECT
來開始陳述式。(請參閱 第 15.2.13 節,「SELECT 陳述式」。)但是,STRAIGHT_JOIN
可能會因為停用半聯結轉換而阻止使用索引。請參閱使用半聯結轉換最佳化 IN 和 EXISTS 子查詢述詞。
最佳化工具追蹤有時可以提供與 EXPLAIN
互補的資訊。但是,最佳化工具追蹤的格式和內容在不同版本之間可能會有所變更。詳細資訊請參閱 MySQL 內部:追蹤最佳化工具。
如果您在您認為應該使用索引時遇到索引未被使用的問題,請執行 ANALYZE TABLE
來更新表格統計資料,例如可能影響最佳化工具所做選擇的索引鍵基數。請參閱 第 15.7.3.1 節,「ANALYZE TABLE 陳述式」。
EXPLAIN
也可以用於取得表格中欄位的相關資訊。EXPLAIN
與 tbl_name
DESCRIBE
和 tbl_name
SHOW COLUMNS FROM
同義。如需更多資訊,請參閱 第 15.8.1 節,「DESCRIBE 陳述式」,以及 第 15.7.7.6 節,「SHOW COLUMNS 陳述式」。tbl_name