MySQL的分析查詢語句(EXPLAIN):

目錄

基本語法:

各個字段的含義:

id:

select_type:

table:

partitions:

type:

possible_keys:

key:

key_len:

ref:

row:

filtered:

extra:


EXPLAIN用于解析SQL語句的執行計劃,展示MySQL如何進行查詢。

基本語法:

EXPLAIN SELECT 具體的執行語句;

各個字段的含義:

id:

在一個大的查詢語句中每一個select關鍵字都對應一個唯一的id。

需要注意的是:

1.查詢優化器可能會對設計子查詢的查詢語句進行重寫,將子查詢轉換為多表查詢的操作。

所以可能id編號和select數不等。如:

explain select * from 表1 where 字段 in (select 字段1 from 表2
where 條件);

2.因為union是要進行去重的,進行去重時是在表1和表2組成的臨時表中去重。所以會多一條記錄。臨時表記錄id為NULL。注意union all是不需要去重的,所以不用建立臨時表。

3.id相同的話,優先級相同,從上往下順序執行。id不同的話,id越大優先級越高,就越先執行。

4.每一個id表示一趟獨立的查詢,sql查詢的趟數越少越好。

select_type:

select關鍵字對應的查詢類型。

查詢語句中不包含union或者子查詢的為"SIMPLE"。

當包含union(union all)或者子查詢時,其中外層主查詢的查詢為"PRIMARY",第二個查詢以及之后的查詢為"UNION"。

包含union(union all)的查詢中,如果小查詢都依賴于外層查詢,那么除了最左邊的小查詢之外,其余的都是"DEPENDENT UNION"。

對于union查詢去重的,是在臨時表上進行的去重,所以針對該臨時表為"UNION RESULT"。

對于子查詢,如果包含子查詢的語句不能轉化為多表查詢且該子查詢不為相關子查詢,那么該子查詢第一個select關鍵字代表的查詢為"SUBQUERY",但是如果是相關子查詢,那么則為"DEPENDENT SUBQUERY"。

對于派生表的查詢,該派生表對應的子查詢是"DERIVED"。

當查詢優化器在致辭那個包含子查詢的語句時,將子查詢物化之后與外層查詢進行連接查詢時,該查詢為"MATERIALIZED"。

table:

無論查詢語句多復雜包含多少個表,都是需要對每一個表進行單表訪問的,索引MySQL規定explain語句輸出的每條記錄都對應著某個單表的訪問方法(每一行記錄都對應著一個單表),該條記錄的table列代表著該表的表名,不一定是真實的表名也可能是實際表、派生表或UNION結果集的臨時表。

partitions:

代表分區表中的命中情況,非分區表為NULL,一般情況下都是NULL。

type:

表示數據訪問方式,按效率從高到低。

當表中只有一條記錄且該表使用的存儲引擎的統計數據是精確的,為"system"。

根據主鍵或者唯一二級索引列與常數進行等值匹配,為"const"。

連接查詢時,被驅動表通過主鍵或者唯一二級索引列等值匹配,為"eq_ref"。

普通二級索引列與常量等值匹配,該索引列的值也可以為NULL時,可能為"ref_or_null"。

包含in子查詢的語句中,如果優化器將in子查詢轉化為exists子查詢且可以使用主鍵進行等值匹配,為"unique_subquery"。

使用索引能夠獲取范圍區間的記錄,為"range"。

當使用索引覆蓋,但需要掃描全部索引時,為"index"。

全表掃描時,為"all"。

possible_keys:

查詢時可能用到的索引,一般涉及到的字段存在索引都會列出,但是不一定使用。

key:

實際查詢用到的索引,如果沒有使用索引則為NULL。

key_len:

查詢中實際使用到的索引長度(字節數)。檢查是否充分利用了索引,值越大越好,主要針對于聯合索引,判斷具體命中了哪些列。

ref:

使用索引列等值查詢時,與索引進行等值匹配的對象信息。

row:

預估的需要讀取的記錄條數,值越小越好,因為讀取的數據量越小,I/O次數可能會更少。

filtered:

經過搜索條件過濾后的記錄條數占預估讀取的記錄數的百分比,值越大越好,說明越匹配。

extra:

補充查詢時的額外信息。

當查詢語句沒有from子句時會提示"no table used"。

查詢語句where子句永遠為false時將會提示"impossible where"。

使用全表掃描來執行對某個表的查詢,且該語句中有針對該表的搜索條件(未完全利用索引),會提示"using where"。

當查詢列表處有MIN或者MAX聚合函數,但沒有符合的where子句的搜索條件的記錄時,會提示"no matching min/max row",如果有的話,則提示"select tables optimized away"。

當查詢列表以及搜索條件只包含屬于某個索引的列,也就是覆蓋索引,會提示"using index"。

當使用左(外)連接時,如果where子句中包含要求被驅動的某個列等于null值的搜索條件且不允許存儲null值時,會提示"using where; not exists"。

當limit子句的參數為0,提示"zero limit"。

如果查詢使用了文件排序的方式執行查詢,會提示"using filesort",需要進行優化,為排序字段增加索引。

查詢中借助了臨時表,則會提示"using temporary",需要優化,最好用索引替代臨時表。

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

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

相關文章

C++ #if

在 C 中,#if 是 預處理器指令(Preprocessor Directive),用于 條件編譯,即在編譯階段根據條件決定是否包含某段代碼。它通常與 #define、#ifdef、#ifndef、#else 和 #endif 配合使用。基本語法#if 條件表達式// 如果條件…

方案 | 動車底部零部件檢測實時流水線檢測算法改進

項目背景隨著我國高速鐵路運營里程突破4.5萬公里,動車組日均開行超過8000列次,傳統人工巡檢方式已無法滿足密集運行下的安全檢測需求。車底關鍵部件如制動系統、懸掛裝置、牽引電機等長期承受高強度振動和沖擊,易產生疲勞裂紋、螺栓松動、部件…

企業收款統計:驅動業務決策的核心引擎設計開發——仙盟創夢IDE

代碼完整代碼<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>黑金風格職員統計</title><style>/* 頁面基礎樣式 - 黑金風格 */body {font-family: Segoe UI, Tahoma, Geneva, Verdana, …

CIAIE 2025上海汽車內外飾展觀察:從美學到功能的產業躍遷

在智能化、電動化浪潮推動下&#xff0c;汽車產業的市場格局、技術路線、供應鏈結構與用戶體驗正被系統性重塑。汽車感知空間核心的“內外飾件”&#xff0c;正從原本的結構性、功能性部件&#xff0c;逐步躍升為智能化、情感化和差異化體驗的重要承載載體&#xff0c;開啟了從…

Spring IOC容器在Web環境中的啟動奧秘:深入源碼解析

一、為何需要關注IOC容器啟動&#xff1f;在Java Web開發中&#xff0c;Spring MVC框架的基石正是IOC容器。但你是否思考過&#xff1a;獨立的IOC模塊如何與Tomcat等Servlet容器協同工作&#xff1f; 其啟動過程與Web容器的生命周期深度綁定&#xff0c;這是構建穩定Spring應用…

前端JS處理時間,適用于聊天、操作記錄等(包含剛剛、x分鐘前、x小時前、x天前)

export default {// 首頁時間轉化formatDate(val) {var nowDate new Date()var oldDate new Date(val)const Y oldDate.getFullYear()const M oldDate.getMonth() 1const D oldDate.getDate()var diff nowDate.getTime() - oldDate.getTime()var minutes Math.floor(di…

C#---StopWatch類

老方法&#xff0c;想要全面了解和學習一個類必先看文檔 微軟文檔 1.StopWatch 提供一組方法和屬性&#xff0c;可用來測量運行時間。 1.1 屬性和方法 屬性&#xff1a; 方法&#xff1a; 1.2 使用 using System.Diagnostics;namespace Study04_反射專題 {internal cla…

3DTiles轉OSGB格式逆向轉換方法研究

一、概述 在傾斜攝影的應用領域中&#xff0c;3DTiles與OSGB格式的互轉是常見的技術需求。作為專業的GIS處理平臺&#xff0c;GISBox憑借其先進的傾斜攝影反切功能&#xff0c;為用戶提供了高效、穩定的跨格式數據轉換解決方案。 二、3DTiles轉OSGB的意義 保留原始幾何與紋理…

【門診進銷存出入庫管理系統】佳易王醫療器械零售進銷存軟件:門診進銷存怎么操作?系統實操教程 #醫藥系統進銷存

前言&#xff1a; &#xff08;一&#xff09;試用版獲取方式 資源下載路徑&#xff1a;進入博主頭像主頁第一篇文章末尾&#xff0c;點擊卡片按鈕&#xff1b;或訪問左上角博客主頁&#xff0c;通過右側按鈕獲取詳細資料。 說明&#xff1a;下載文件為壓縮包&#xff0c;使用…

華為交換機配置文件的相關命令和用法

文章目錄一、基本配置命令一、基本配置命令 1、查看當前運行的配置文件 <Huawei>display current-configuration2、配置文件保存 <Huawei>save <Huawei>save vrpcfg-20250623.zip #保存為指定文件名3、查看保存的配置 <Huawei>display saved-configu…

【汽車標定數據】動態優先級線程池在異步多文件解析中的應用

目錄 一、需求背景 項目背景&#xff1a;電控數據管理系統優化 優化方案&#xff1a;引入OLAP數據庫和動態線程池 線程池性能急需解決的問題 資源過載與閑置的平衡&#xff1a; 優先級處理與公平性&#xff1a; 任務類型適配性&#xff1a; 二、線程池介紹 2.1、線程池…

Unity人形角色IK優化指南

目錄 Unity中人形角色的IKI 站立、奔跑IK 1. 接觸面法線 2. 調整質心位置 3. 保持原本朝向 攀爬IK 1. 四肢貼合 2. 保持身體與攀爬面的距離 3. 適應外拐角 瞄準IK 1. 頭部朝向 2. 手臂朝向 尾聲 本文將嘗試僅使用Untiy內置的Animator來解決常見的幾種運動所需的IK…

基于wireshark的USB 全速硬件抓包工具USB Sniffer Lite的使用

1、前言 隨著MCU的發展和需求的增多&#xff0c;USB已成為主流MCU的標配外設&#xff0c;但很多還是全速或低速IP&#xff0c;因此往往用不上高速抓包設備。 2、安裝wireshark和拷貝抓包插件 將抓包插件拷貝到wireshark的extcap目錄里&#xff0c;可參考基于wireshark的USB …

easyexcel模板導出Map數據時空值列被下一行列非空數據覆蓋

場景是&#xff1a;我用模板導出數據&#xff0c;sheet數據是一個List<String,Object>集合&#xff0c;然后發現第一行的第三列應該為空&#xff0c;但是不為空&#xff0c;填上了第二行的第三列數據&#xff1b;就像按列寫數據&#xff0c;碰到空值&#xff0c;下一行數…

并行Builder-輸出型流程編排的新思路

如果對于框架的介紹不感興趣的可以直接跳到Getting Started快速開始 在設計一款數據加載編排框架時&#xff0c;除了任何框架都必須具備的可靠性與穩定性之外&#xff0c;對于本次編排框架的設計&#xff0c;我們把核心目標放在高性能與易用性上。這不僅要求框架能夠快速、高效…

C#WPF實戰出真汁03--登錄界面設計

1、登錄界面設計要點簡潔直觀的布局 登錄界面應避免復雜元素&#xff0c;突出核心功能。通常包含用戶名/郵箱輸入框、密碼輸入框、登錄按鈕及可選功能&#xff08;如“記住我”“忘記密碼”&#xff09;。保持表單字段不超過5個&#xff0c;減少用戶認知負擔。清晰的視覺層次 通…

前端css學習筆記6:盒子模型

本文為個人學習總結&#xff0c;如有謬誤歡迎指正。前端知識眾多&#xff0c;后續將繼續記錄其他知識點&#xff01; 目錄 前言 一、組成 ?編輯content padding border margin margin塌陷 margin合并 使用場景 標題與段落間距 卡片列表布局 二、內容溢出—overflo…

以下是對智能電梯控制系統功能及系統云端平臺設計要點的詳細分析,結合用戶提供的梯控系統網絡架構設計和系統軟硬件組成,分點論述并補充關鍵要點:

智能電梯控制系統功能及系統云端平臺設計要點一、梯控系統網絡架構設計服務本地化&#xff1a;電梯門禁服務器本地化部署&#xff1a;核心服務器部署在項目本地&#xff0c;確保數據安全、運維及時性&#xff0c;減少網絡依賴。需支持本地獨立運行&#xff0c;避免云端故障影響…

全球電商業財一體化:讓出海品牌實現“看得見的增長“

內外貿并行的數字化挑戰在數字經濟浪潮下&#xff0c;中國品牌呈現"雙輪驅動"增長態勢&#xff1a;一邊深耕天貓、京東、抖音等國內主流平臺&#xff0c;一邊通過Amazon、Tiktok、eBay、Temu等渠道拓展全球市場。然而&#xff0c;多平臺、多幣種、多地區的復雜運營環…

Nacos-5--Nacos2.x版本的通信原理

Nacos 2.x引入了gRPC作為其主要的通信協議&#xff0c;取代1.x版本中的HTTP長輪詢和UDP通信方式&#xff0c;顯著提升了性能、實時性和穩定性。gRPC是一個高性能、開源的遠程過程調用&#xff08;RPC&#xff09;框架&#xff0c;它基于HTTP/2標準設計&#xff0c;并使用Protoc…