可視化執行計畫功能會產生並顯示 MySQL EXPLAIN
陳述式的視覺化表示,使用擴充 JSON 格式中提供的擴充資訊。MySQL Workbench 為執行的查詢提供所有 EXPLAIN
格式,包括原始擴充 JSON、傳統格式和可視化查詢計畫。
若要檢視可視化執行計畫,請從 SQL 編輯器執行您的查詢,然後在查詢結果標籤中選取 執行計畫。執行計畫預設為 可視化執行計畫
,但也包含 表格式執行計畫
檢視,這類似於在 MySQL 用戶端中執行 EXPLAIN
時所看到的內容。如需 MySQL 如何執行陳述式的相關資訊,請參閱 使用 EXPLAIN 優化查詢。
可視化執行計畫圖中的執行順序是由下而上、由左而右。下列的圖表範例提供用於表示可視化執行計畫各方面的圖形、文字和資訊慣例的概觀。如需特定資訊,請參閱
第一個圖中的可視化執行計畫圖顯示了以下查詢的可視化表示。
SELECT CONCAT(customer.last_name, ', ', customer.first_name)
AS customer, address.phone, film.title FROM rental
INNER JOIN customer ON rental.customer_id = customer.customer_id
INNER JOIN address ON customer.address_id = address.address_id
INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id
INNER JOIN film ON inventory.film_id = film.film_id
WHERE rental.return_date IS NULL
AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE()
LIMIT 5;
下一個可視化執行計畫圖顯示了包含雜湊聯結的查詢的可視化表示。在 MySQL Workbench 8.0.22 之前,雜湊聯結由 MySQL 8.0.19(或更早版本)執行的查詢以 區塊巢狀迴圈
菱形表示。
SELECT first_name, last_name
FROM actor
FULL JOIN film_actor
WHERE '' = film_actor.actor_id;
圖形慣例
標準方塊:表格
圓角方塊:GROUP 和 SORT 等運算
帶框方塊:子查詢
菱形:聯結
文字與資訊慣例
方塊下方的標準文字:表格(或別名)名稱
方塊下方的粗體文字:所使用的索引/索引鍵
方塊右上角的數字:篩選後從表格中使用的列數
方塊左上角的數字:存取該表格的相對成本(需要 MySQL 5.7 或更高版本)
巢狀迴圈(或雜湊聯結)菱形右邊的數字:聯結產生的列數
菱形上方的數字:聯結的相對成本(需要 MySQL 5.7 或更高版本)
下表顯示了可視化執行計畫圖中使用的相關顏色和說明。如需成本估算的詳細資訊,請參閱 最佳化工具成本模型。
表 7.1 可視化執行計畫圖資訊
系統名稱 | 顏色 | 可視化圖上的文字 | 工具提示相關資訊 |
---|---|---|---|
SYSTEM | 藍色 | 單列:系統常數 | 非常低的成本 |
CONST | 藍色 | 單列:常數 | 非常低的成本 |
EQ_REF | 綠色 | 唯一索引鍵查詢 | 低成本 -- 最佳化工具能夠找到可用來擷取所需記錄的索引。它速度很快,因為索引搜尋會直接導向包含所有列資料的頁面 |
REF | 綠色 | 非唯一索引鍵查詢 | 中低 -- 如果符合的列數較少,則為低;隨著列數增加,則為較高 |
FULLTEXT | 黃色 | 全文索引搜尋 | 特殊化 FULLTEXT 搜尋。低 -- 針對此特殊化的搜尋需求 |
REF_OR_NULL | 綠色 | 索引鍵查詢 + 擷取 NULL 值 | 中低 -- 如果符合的列數較少,則為低;隨著列數增加,則為較高 |
INDEX_MERGE | 綠色 | 索引合併 | 中 -- 在查詢中尋找更好的索引選擇以提高效能 |
UNIQUE_SUBQUERY | 橘色 | 查詢子查詢表格中的唯一索引鍵 | 低 -- 用於高效的子查詢處理 |
INDEX_SUBQUERY | 橘色 | 查詢子查詢表格中的非唯一索引鍵 | 低 -- 用於高效的子查詢處理 |
RANGE | 橘色 | 索引範圍掃描 | 中 -- 部分索引掃描 |
INDEX | 紅色 | 完整索引掃描 | 高 -- 尤其是大型索引 |
ALL | 紅色 | 完整資料表掃描 | 非常高 -- 對於大型表格非常昂貴,但對小型表格的影響較小。找不到表格可用的索引,這會強制最佳化工具搜尋每一列。這也可能表示搜尋範圍太廣,索引將無用。 |
UNKNOWN | 黑色 | 未知 | 注意:如果無法判斷相符項目,則這是預設值 |