基本用法
EXPLAIN SELECT id, username FROM userinfo WHERE username LIKE '%peng%';
輸出欄位詳解
| 欄位 | 含義 | 關鍵值範例 |
| id | SELECT 識別序號 | 1 |
| select_type | 查詢類型 | SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION |
| table | 存取的表 | userinfo |
| type | 存取策略 (由好到壞) | system > const > eq_ref > ref > range > index > ALL |
| possible_keys | 可能用到的索引 | idx_username |
| key | 實際用到的索引 | idx_username |
| key_len | 索引鍵長度 (位元組) | 768 |
| ref | 與 key 配合的列/常數 | const |
| rows | 預估掃描行數 | 6 |
| Extra | 額外資訊 | Using where, Using index, Using filesort, Using temporary |
實戰判讀口訣
- type=ALL → 全表掃描,需加索引。
- Extra=Using filesort → 需排序,嘗試覆蓋索引或調整 ORDER BY。
- Extra=Using temporary → 產生臨時表,優化 GROUP BY/DISTINCT。
- key=NULL → 未用索引,檢查 WHERE 條件與索引定義。
- rows 巨大 → 預估掃描行多,索引選擇性差或統計過舊 (
ANALYZE TABLE)。
進階
EXPLAIN FORMAT=JSON (5.6+):輸出結構化 JSON,含成本估算。
EXPLAIN ANALYZE (8.0.18+):實際執行並回報實際耗時、行數。