【MySql】EXPLAIN執行計劃全解析:15個字段深度解讀與調優指南

文章目錄

    • 一、執行計劃核心字段總覽
    • 二、關鍵字段深度拆解
      • 1. type(訪問類型)——查詢性能的晴雨表
        • 典型場景分析:
      • 2. key_len(索引使用長度)——索引利用率的檢測儀
        • 計算示例:
      • 3. Extra(附加信息)——隱藏的性能殺手
        • 常見值解析:
    • 三、全字段詳解速查表
    • 四、性能診斷四步法
      • 第一步:檢查type等級
      • 第二步:驗證索引使用
      • 第三步:分析掃描行數
      • 第四步:排查Extra警告
    • 五、經典優化案例
      • 案例1:索引失效分析
      • 案例2:覆蓋索引優化
    • 六、高級分析技巧
      • 1. JSON格式查看詳細成本
      • 2. 索引長度驗證公式
      • 3. 執行計劃可視化工具推薦
    • 七、常見問題解決方案

一、執行計劃核心字段總覽

在這里插入圖片描述

字段名人類語言解釋性能影響等級
type數據訪問方式★★★★★
key實際使用索引★★★★☆
rows預估掃描行數★★★★☆
Extra附加執行信息★★★★☆
key_len使用索引的長度★★★☆☆

二、關鍵字段深度拆解

1. type(訪問類型)——查詢性能的晴雨表

性能從優到劣排序
system > const > eq_ref > ref > fulltext > range > index > ALL

典型場景分析:
-- 最優情況:主鍵查詢
EXPLAIN SELECT * FROM users WHERE id = 1;
-- type: const-- 最差情況:全表掃描
EXPLAIN SELECT * FROM orders WHERE amount > 100;
-- type: ALL

2. key_len(索引使用長度)——索引利用率的檢測儀

計算公式
索引字段長度 × 字段數 + 預留字節

計算示例:
CREATE TABLE `demo` (`id` INT(11) NOT NULL,`name` VARCHAR(20) DEFAULT NULL,`age` TINYINT(4) DEFAULT NULL,INDEX `idx_name_age` (`name`,`age`)
);-- 查詢1:使用完整索引
EXPLAIN SELECT * FROM demo WHERE name='張三' AND age=25;
-- key_len = 20*3+1 + 1 = 62-- 查詢2:僅使用name列
EXPLAIN SELECT * FROM demo WHERE name='李四';
-- key_len = 20*3+1 = 61

3. Extra(附加信息)——隱藏的性能殺手

常見值解析:
含義處理建議
Using index使用覆蓋索引保持當前優化
Using temporary使用臨時表檢查GROUP BY/ORDER BY字段
Using filesort文件排序添加合適索引
Using where存儲引擎返回后過濾檢查索引是否完整
Select tables optimized away優化器已優化(如MIN/MAX查詢)無需處理

三、全字段詳解速查表

字段名含義常見值示例
id查詢序列號1, 2(聯合查詢時數值不同)
select_type查詢類型SIMPLE, PRIMARY, SUBQUERY
table訪問的表名users, orders
partitions匹配的分區p0, p1
type訪問方式const, ref, ALL
possible_keys可能使用的索引idx_name, PRIMARY
key實際使用的索引idx_age
key_len使用索引的長度4, 62
ref索引引用關系const, db1.users.id
rows預估掃描行數1, 10024
filtered存儲引擎返回數據后,經過過濾剩余的比例100.00
Extra附加執行信息Using index, Using temporary

四、性能診斷四步法

第一步:檢查type等級

- ? 目標:至少達到range級別
- ? 問題:出現ALL時需要緊急優化
- 💡 處理:添加合適索引

第二步:驗證索引使用

-- 檢查實際使用索引是否最優
SHOW INDEX FROM users;

第三步:分析掃描行數

- 當rows > 10000時:可能存在全表掃描
- 優化案例:100萬行表查詢從2s優化到0.02s

第四步:排查Extra警告

1. 發現Using filesort → 檢查ORDER BY字段是否匹配索引
2. 出現Using temporary → 優化GROUP BY字段
3. 存在Using where → 檢查查詢條件是否完整使用索引

五、經典優化案例

案例1:索引失效分析

-- 原始查詢(type: ALL)
EXPLAIN SELECT * FROM orders WHERE YEAR(create_time)=2023;-- 優化方案:改為范圍查詢
EXPLAIN SELECT * FROM orders 
WHERE create_time BETWEEN '2023-01-01' AND '2023-12-31';
-- type提升為range

案例2:覆蓋索引優化

-- 原始查詢(Extra: NULL)
EXPLAIN SELECT user_id FROM comments WHERE post_id=100;-- 創建覆蓋索引
ALTER TABLE comments ADD INDEX idx_post_user(post_id,user_id);
-- Extra顯示Using index

六、高級分析技巧

1. JSON格式查看詳細成本

EXPLAIN FORMAT=JSON 
SELECT * FROM products WHERE price > 100;
-- 查看"cost_info"字段

2. 索引長度驗證公式

VARCHAR(n):n*3+2
INT:4
TINYINT:1
DATETIME:5
允許NULL的字段:+1

3. 執行計劃可視化工具推薦

  1. MySQL Workbench執行計劃可視化
  2. Percona Toolkit的pt-visual-explain
  3. JetBrains DataGrip的圖形化展示

七、常見問題解決方案

癥狀原因解決方案
type=ALL無可用索引添加WHERE條件涉及的索引
Using filesort排序字段不匹配索引創建復合索引包含排序字段
key_len過短未充分使用復合索引檢查查詢條件順序
rows數值異常統計信息過期執行ANALYZE TABLE
filtered=100存儲引擎層未過濾數據檢查索引覆蓋情況

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70849.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何實現一個 Spring Boot Starter

在 Spring Boot 中,Starter 是一種自動配置的模塊,它封裝了一些常用的功能,并通過 Spring Boot 的約定大于配置的原則,使開發者能夠快速使用和集成相關功能。通常,Spring Boot Starter 包含了所需的依賴、配置、自動化…

使用python做http代理請求

有這樣一個需求現在有兩臺A,B兩臺電腦組成了一個局域網,在A電腦上開發webjava應用,需要調用第三方接口做http請求,但是這個請求只能在B電腦上請求。 一種解決方案:自定義一個中間服務,在電腦B上運行一個簡…

系統架構設計師考點——嵌入式技術

一、備考指南 嵌入式技術主要考查的是嵌入式基礎知識、嵌入式設計等相關知識,在系統架構設計師的考試中選擇題占2~4分,案例分析有時會考關鍵路徑的技術問答,這個題目一般比較難,但是由于案例分析題是五題選三題,所以…

當AI重構認知:技術狂潮下的教育沉思錄

備注:文章未Deepseek R1模型輔助生成,如有不妥請諒解。 以下使原文: 我有三個娃,各間隔4到5歲,經歷過搜索引擎,短視頻,短劇,本身曾經也是教育專業出生,任何事務都有兩面性…

EasyExcel 實踐案例:打印工資條

文章目錄 💡 1. 每個員工一個 Excel 文件? 占位符格式📌 Excel 模板📌 Java 代碼🔥 關鍵點 💡 2. 每個員工一個 Sheet? 占位符格式📌 Java 代碼🔥 關鍵點 💡 3. 一個 Sheet&#x…

編程題-從前序與中序遍歷序列構造二叉樹(中等-重點)

題目: 給定兩個整數數組 preorder 和 inorder ,其中 preorder 是二叉樹的先序遍歷, inorder 是同一棵樹的中序遍歷,請構造二叉樹并返回其根節點。 提示: preorder 和 inorder 均 無重復 元素 解法一(遞歸&#xff0…

Vue 3 + Vite 項目配置訪問地址到服務器某個文件夾的解決方案

前言 在開發 Vue 3 Vite 項目時,我們經常需要將項目部署到服務器的某個特定文件夾下。例如,將項目部署到 /my-folder/ 目錄下,而不是服務器的根目錄。這時,我們需要對 Vite 和 Vue Router 進行一些配置,以確保項目能…

【Rust中級教程】2.10. API設計原則之受約束性(constrained) Pt.1:對類型進行修改、`#[non_exhaustive]`注解

喜歡的話別忘了點贊、收藏加關注哦(加關注即可閱讀全文),對接下來的教程有興趣的可以關注專欄。謝謝喵!(・ω・) 2.10.1. 接口的更改要三思 如果你的接口要做出對用戶可見的更改,那么一定要三思…

Imagination GPU 3D Graphics Wrokload

本次分享Imagination GPU 的3D 圖像處理負載流程。 總的分為兩個階段 第一階段:Geometry Processing Phase(幾何處理階段)是渲染管線中的一個關鍵環節,主要負責對三維幾何數據進行處理和變換,以便后續在屏幕上進行顯…

自動化設備對接MES系統找DeepSeek問方案

項目需要現場的PLC設備HTTP協議JSON格式的方式對接MES系統平臺,于是試了一下: 找到的相關資源鏈接在這里。

VoIP之音頻3A技術

音頻3A技術是改善語音通話質量的三種關鍵技術的簡稱,包括聲學回聲消除(Acoustic Echo Cancellation, AEC)、自動增益控制(Automatic Gain Control, AGC)、自噪聲抑制(Automatic Noise Suppression, ANS&…

量子計算的數學基礎:復數、矩陣和線性代數

量子計算是基于量子力學原理的一種新型計算模式,它與經典計算機在信息處理的方式上有著根本性的區別。在量子計算中,信息的最小單位是量子比特(qubit),而不是傳統計算中的比特。量子比特的狀態是通過量子力學中的數學工具來描述的,因此,理解量子計算的數學基礎對于深入學…

京準電鐘:NTP精密時鐘服務器在自動化系統中的作用

京準電鐘:NTP精密時鐘服務器在自動化系統中的作用 京準電鐘:NTP精密時鐘服務器在自動化系統中的作用 NTP精密時鐘服務器在自動化系統中的作用非常重要,特別是在需要高精度時間同步的場景中。NTP能夠提供毫秒級的時間同步精度,這…

Python實現GO鵝優化算法優化Catboost回歸模型項目實戰

說明:這是一個機器學習實戰項目(附帶數據代碼文檔視頻講解),如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 在當今的數據驅動時代,機器學習模型在各種應用中扮演著至關重要的角色。特別是在預測分…

如何在docker上部署前端nginx服務(VUE)

目錄結構 clean.sh docker stop rszWeb; docker rm rszWeb; start.sh docker run -d \ --name rszWeb \ -p 7084:80 \ -m 500m \ --privileged=true \ --restart=always \ -v /home/rsz/ui/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/rsz/ui/logs:/meta/logs \ -v /…

可獄可囚的爬蟲系列課程 15:防盜鏈反爬蟲的處理

一、防盜鏈了解 防盜鏈是一種技術手段,主要用于防止其他網站通過直接鏈接的方式使用本網站的資源(如圖片、文件等),從而節省帶寬和服務器資源。當其他網站嘗試直接鏈接到受保護的資源時,服務器會根據設置的規則判斷請求…

2020年藍橋杯Java B組第二場題目+部分個人解析

#A&#xff1a;門牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…

Hadoop架構詳解

Hadoop 是一個開源的分布式計算系統&#xff0c;用于存儲和處理大規模數據集。Hadoop 主要由HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce、Yarn&#xff08;Jobtracker&#xff0c;TaskTracker&#xff09;三大核心組件組成。其中HDFS是分布式文件…

DeepSeek在初創企業、教育和數字營銷領域應用思考

如今&#xff0c;像 DeepSeek 這樣的人工智能工具正在改變企業的運營方式&#xff0c;優化流程并顯著提高生產力。通過重復任務的自動化、大量數據的分析以及內容創建效率的提高&#xff0c;組織正在尋找新的競爭和卓越方式。本文介紹了 DeepSeek 如何用于提高三個關鍵領域的生…

day7作業

編寫一個如下場景&#xff1a; 有一個英雄Hero類&#xff0c;私有成員&#xff0c;攻擊&#xff08;Atx&#xff09;&#xff0c;防御&#xff08;Defense&#xff09;&#xff0c;速度&#xff08;Speed)&#xff0c;生命值&#xff08;Blood)&#xff0c;以及所有的set get 方…