MySQL Workbench 手冊  /  效能工具  /  可視化執行計畫

7.4 可視化執行計畫

可視化執行計畫功能會產生並顯示 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;

圖 7.7 可視化執行計畫範例

Content is described in the surrounding text.

下一個可視化執行計畫圖顯示了包含雜湊聯結的查詢的可視化表示。在 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;

圖 7.8 具有雜湊聯結的可視化執行計畫範例

Content is described in the surrounding text.

圖形慣例

  • 標準方塊:表格

  • 圓角方塊: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 黑色 未知 注意:如果無法判斷相符項目,則這是預設值