国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中通過EXPLAIN如何分析SQL的執行計劃詳解

2024-07-24 12:49:57
字體:
來源:轉載
供稿:網友

前言

在MySQL中,我們可以通過EXPLAIN命令獲取MySQL如何執行SELECT語句的信息,包括在SELECT語句執行過程中表如何連接和連接的順序。

下面分別對EXPLAIN命令結果的每一列進行說明:

.select_type:表示SELECT的類型,常見的取值有:


類型 說明
SIMPLE 簡單表,不使用表連接或子查詢
PRIMARY 主查詢,即外層的查詢
UNION UNION中的第二個或者后面的查詢語句
SUBQUERY 子查詢中的第一個

.table:輸出結果集的表(表別名)

.type:表示MySQL在表中找到所需行的方式,或者叫訪問類型。常見訪問類型如下,從上到下,性能由差到最好:


ALL 全表掃描
index 索引全掃描
range 索引范圍掃描
ref 非唯一索引掃描
eq_ref 唯一索引掃描
const,system 單表最多有一個匹配行
NULL 不用掃描表或索引

1、type=ALL,全表掃描,MySQL遍歷全表來找到匹配行

一般是沒有where條件或者where條件沒有使用索引的查詢語句

EXPLAIN SELECT * FROM customer WHERE active=0;

2、type=index,索引全掃描,MySQL遍歷整個索引來查詢匹配行,并不會掃描表

一般是查詢的字段都有索引的查詢語句

EXPLAIN SELECT store_id FROM customer;

3、type=range,索引范圍掃描,常用于<、<=、>、>=、between等操作

EXPLAIN SELECT * FROM customer WHERE customer_id>=10 AND customer_id<=20;

注意這種情況下比較的字段是需要加索引的,如果沒有索引,則MySQL會進行全表掃描,如下面這種情況,create_date字段沒有加索引:

EXPLAIN SELECT * FROM customer WHERE create_date>='2006-02-13' ;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金沙县| 永寿县| 滨海县| 中宁县| 盘锦市| 兴安盟| 海原县| 五家渠市| 老河口市| 贞丰县| 扶绥县| 犍为县| 蒲江县| 兴安县| 扶风县| 保山市| 大渡口区| 方城县| 东丰县| 博湖县| 洪雅县| 河北区| 黄浦区| 溧阳市| 永靖县| 南开区| 乌拉特后旗| 达州市| 汉寿县| 丽水市| 珲春市| 武义县| 西华县| 修水县| 西乌珠穆沁旗| 延吉市| 都昌县| 德钦县| 崇礼县| 沙河市| 正宁县|