成人欧美一区二区三区的电影,日韩一级一欧美一级国产,国产成人国拍亚洲精品,无码人妻精品一区二区三区毛片,伊人久久无码大香线蕉综合

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

MySQL EXPLAIN 中的七種 type 類型詳解

zhenglin
2025年9月23日 15:28 本文熱度 868

深入理解 MySQL EXPLAIN 的七種 type 類型


掌握 MySQL 的 EXPLAIN 命令是數(shù)據(jù)庫(kù)性能優(yōu)化的必備技能,而其中的 type 字段更是分析查詢性能的關(guān)鍵指標(biāo)。

本文將帶你深入理解七種 type 類型的含義、使用場(chǎng)景和優(yōu)化策略。


一、什么是 EXPLAIN 的 type 字段?

在 MySQL 中,EXPLAIN 命令用于分析 SQL 查詢的執(zhí)行計(jì)劃。其中的 type 字段表示 MySQL 決定如何查找表中的行,它直接反映了查詢的性能特征。

理解不同類型的訪問(wèn)方式,對(duì)于 SQL 優(yōu)化至關(guān)重要。



二、七種 type 類型詳解

1. system ★★

★★★(最優(yōu))

特點(diǎn)

  • 表只有一行數(shù)據(jù)(系統(tǒng)表)

  • 是 const 類型的特例,性能最佳


示例場(chǎng)景



-- 查詢系統(tǒng)表中的單行數(shù)據(jù)

EXPLAIN SELECT * FROM mysql.proxies_priv WHERE user = 'root';

輸出特征

  • type: system

  • rows: 1


優(yōu)化建議
:這已經(jīng)是最高效的訪問(wèn)方式,無(wú)需進(jìn)一步優(yōu)化。



2. const ★★★★★

特點(diǎn)

  • 通過(guò)主鍵或唯一索引的等值查詢

  • 最多返回一條記錄

  • 查詢條件必須是常量值


示例場(chǎng)景


-- 主鍵等值查詢

EXPLAIN SELECT * FROM users WHERE id = 1;


-- 唯一索引等值查詢

EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';

輸出特征

  • type: const

  • rows: 1

  • key: 使用的索引名


優(yōu)化建議
:確保查詢使用主鍵或唯一索引,這是理想的查詢方式。



3. eq_ref ★★★★☆

特點(diǎn)

  • 多表連接時(shí),使用主鍵或唯一索引作為關(guān)聯(lián)條件

  • 對(duì)于前表的每一行,后表只返回一條匹配記錄

  • 通常出現(xiàn)在高性能的 JOIN 操作中


示例場(chǎng)景


-- orders.user_id 是 users.id 的外鍵,且 users.id 是主鍵

EXPLAIN SELECT * FROM orders JOIN users ON orders.user_id = users.id;

輸出特征

  • type: eq_ref

  • key: 使用的索引名

  • 通常與 const 或 ref 一起出現(xiàn)在 JOIN 查詢中


優(yōu)化建議:確保連接條件使用主鍵或唯一索引,檢查外鍵關(guān)系是否正確建立。



4. ref ★★★☆☆

特點(diǎn)

  • 使用普通索引的等值查詢

  • 可能返回多行記錄

  • 性能優(yōu)于全表掃描,但不如 const 和 eq_ref


示例場(chǎng)景


-- name 列有普通索引

EXPLAIN SELECT * FROM users WHERE name = '張三';

輸出特征

  • type: ref

  • key: 使用的索引名

  • rows: 預(yù)計(jì)掃描行數(shù)


優(yōu)化建議

  • 為頻繁查詢的條件添加合適的索引

  • 考慮使用覆蓋索引減少回表操作

  • 注意索引的選擇性,高選擇性列更適合建索引



5. range ★★☆☆☆

特點(diǎn)

  • 使用索引進(jìn)行范圍掃描

  • 常見(jiàn)于 BETWEEN、>、<、IN 等范圍操作

  • 只檢索給定范圍內(nèi)的行


示例場(chǎng)景



-- age 列有索引

EXPLAIN SELECT * FROM users WHERE age BETWEEN 20 AND 30;

EXPLAIN SELECT * FROM users WHERE id IN (1, 2, 3);

輸出特征

  • type: range

  • key: 使用的索引名

  • rows: 范圍掃描的行數(shù)估計(jì)


優(yōu)化建議

  • 注意范圍查詢后的列索引會(huì)失效

  • 在聯(lián)合索引中,將范圍查詢列放在最后

  • 考慮使用覆蓋索引優(yōu)化查詢



6. index ★★☆☆☆

特點(diǎn)

  • 全索引掃描(比全表掃描好)

  • 只掃描索引樹(shù),不掃描數(shù)據(jù)行

  • 常見(jiàn)于覆蓋索引查詢或需要索引排序的場(chǎng)景


示例場(chǎng)景



-- 索引覆蓋查詢(status 有索引)

EXPLAIN SELECT status FROM users;


-- 使用索引但需要排序

EXPLAIN SELECT id FROM users ORDER BY id;

輸出特征

  • type: index

  • key: 使用的索引名

  • Extra: Using index(如果使用覆蓋索引)


優(yōu)化建議

  • 考慮是否真的需要所有索引數(shù)據(jù)

  • 對(duì)于大表,全索引掃描仍然很耗資源

  • 評(píng)估是否可以通過(guò)添加 LIMIT 限制結(jié)果集



7. ALL ☆☆☆☆☆(最差)

特點(diǎn)

  • 全表掃描

  • 性能最差,尤其是大表

  • 表示沒(méi)有使用任何索引


示例場(chǎng)景


-- 沒(méi)有為 address 列創(chuàng)建索引

EXPLAIN SELECT * FROM users WHERE address LIKE '%北京%';


-- 沒(méi)有合適的索引可用

EXPLAIN SELECT * FROM users WHERE created_at > '2023-01-01';

輸出特征

  • type: ALL

  • key: NULL

  • rows: 表的總行數(shù)

  • Extra: Using where


優(yōu)化建議

  • 必須為查詢條件添加合適的索引

  • 考慮使用覆蓋索引

  • 限制返回的數(shù)據(jù)量(添加 LIMIT)

  • 評(píng)估是否需要所有列,避免 SELECT *



三、性能對(duì)比總結(jié)表



四、實(shí)戰(zhàn)優(yōu)化案例

問(wèn)題查詢


EXPLAIN SELECT * FROM orders WHERE customer_id = 100 AND order_date > '2023-01-01'

 假設(shè)當(dāng)前 type 顯示為 ALL,表示全表掃描。

優(yōu)化步驟

1.添加聯(lián)合索引

ALTER TABLE orders ADD INDEX idx_customer_date(customer_id, order_date);


2.驗(yàn)證優(yōu)化效果

EXPLAIN SELECT * FROM orders 

WHERE customer_id = 100 AND order_date > '2023-01-01';

現(xiàn)在 type 應(yīng)該變?yōu)?nbsp;range。


3.
進(jìn)一步優(yōu)化(使用覆蓋索引)

EXPLAIN SELECT order_id, order_date FROM orders 

WHERE customer_id = 100 AND order_date > '2023-01-01';

如果只需要部分列,可以考慮使用覆蓋索引。


閱讀原文:原文鏈接?


該文章在 2025/9/23 15:29:06 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved