亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

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

2024-07-25 19:08:46
字體:
來源:轉載
供稿:網友

前言

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

MySQL,EXPLAIN,SQL,執行計劃

下面分別對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;

MySQL,EXPLAIN,SQL,執行計劃

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

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

EXPLAIN SELECT store_id FROM customer;

MySQL,EXPLAIN,SQL,執行計劃

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

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

MySQL,EXPLAIN,SQL,執行計劃

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

EXPLAIN SELECT * FROM customer WHERE create_date>='2006-02-13' ;

MySQL,EXPLAIN,SQL,執行計劃

4、type=ref,使用非唯一索引或唯一索引的前綴掃描,返回匹配某個單獨值的記錄行

store_id字段存在普通索引(非唯一索引)

EXPLAIN SELECT * FROM customer WHERE store_id=10;

MySQL,EXPLAIN,SQL,執行計劃

ref類型還經常會出現在join操作中:

customer、payment表關聯查詢,關聯字段customer.customer_id(主鍵),payment.customer_id(非唯一索引)。表關聯查詢時必定會有一張表進行全表掃描,此表一定是幾張表中記錄行數最少的表,然后再通過非唯一索引尋找其他關聯表中的匹配行,以此達到表關聯時掃描行數最少。

MySQL,EXPLAIN,SQL,執行計劃

因為customer、payment兩表中customer表的記錄行數最少,所以customer表進行全表掃描,payment表通過非唯一索引尋找匹配行。

EXPLAIN SELECT * FROM customer customer INNER JOIN payment payment ON customer.customer_id = payment.customer_id;

MySQL,EXPLAIN,SQL,執行計劃

5、type=eq_ref,類似ref,區別在于使用的索引是唯一索引,對于每個索引鍵值,表中只有一條記錄匹配

eq_ref一般出現在多表連接時使用primary key或者unique index作為關聯條件。

film、film_text表關聯查詢和上一條所說的基本一致,只不過關聯條件由非唯一索引變成了主鍵。

EXPLAIN SELECT * FROM film film INNER JOIN film_text film_text ON film.film_id = film_text.film_id;

MySQL,EXPLAIN,SQL,執行計劃

6、type=const/system,單表中最多有一條匹配行,查詢起來非常迅速,所以這個匹配行的其他列的值可以被優化器在當前查詢中當作常量來處理

const/system出現在根據主鍵primary key或者 唯一索引 unique index 進行的查詢

根據主鍵primary key進行的查詢:

EXPLAIN SELECT * FROM customer WHERE customer_id =10;

MySQL,EXPLAIN,SQL,執行計劃

根據唯一索引unique index進行的查詢:

EXPLAIN SELECT * FROM customer WHERE email ='MARY.SMITH@sakilacustomer.org';

MySQL,EXPLAIN,SQL,執行計劃

MySQL,EXPLAIN,SQL,執行計劃

7、type=NULL,MySQL不用訪問表或者索引,直接就能夠得到結果

MySQL,EXPLAIN,SQL,執行計劃

.possible_keys: 表示查詢可能使用的索引

.key: 實際使用的索引

.key_len: 使用索引字段的長度

.ref: 使用哪個列或常數與key一起從表中選擇行。

.rows: 掃描行的數量

.filtered: 存儲引擎返回的數據在server層過濾后,剩下多少滿足查詢的記錄數量的比例(百分比)

.Extra: 執行情況的說明和描述,包含不適合在其他列中顯示但是對執行計劃非常重要的額外信息

最主要的有一下三種:

 

Using Index 表示索引覆蓋,不會回表查詢
Using Where 表示進行了回表查詢
Using Index Condition 表示進行了ICP優化
Using Flesort 表示MySQL需額外排序操作, 不能通過索引順序達到排序效果

 

什么是ICP?

MySQL5.6引入了Index Condition Pushdown(ICP)的特性,進一步優化了查詢。Pushdown表示操作下放,某些情況下的條件過濾操作下放到存儲引擎。

EXPLAIN SELECT * FROM rental WHERE rental_date='2005-05-25' AND customer_id>=300 AND customer_id<=400;

在5.6版本之前:

優化器首先使用復合索引idx_rental_date過濾出符合條件rental_date='2005-05-25'的記錄,然后根據復合索引idx_rental_date回表獲取記錄,最終根據條件customer_id>=300 AND customer_id<=400過濾出最后的查詢結果(在服務層完成)。

在5.6版本之后:

MySQL使用了ICP來進一步優化查詢,在檢索的時候,把條件customer_id>=300 AND customer_id<=400也推到存儲引擎層完成過濾,這樣能夠降低不必要的IO訪問。Extra為Using index condition就表示使用了ICP優化。

MySQL,EXPLAIN,SQL,執行計劃

參考

《深入淺出MySQL》

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。 


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲电影免费观看高清完整版| 91精品国产高清自在线| 韩国福利视频一区| 国产视频综合在线| 中文字幕在线看视频国产欧美| 日韩精品视频免费专区在线播放| 日韩电影免费在线观看中文字幕| 国产亚洲精品久久久优势| 精品久久中文字幕| 日韩三级影视基地| 久久偷看各类女兵18女厕嘘嘘| 欧美与黑人午夜性猛交久久久| 日韩精品在线影院| 欧美极品少妇全裸体| 一区二区三区久久精品| 九九热99久久久国产盗摄| 中文字幕久久久av一区| 国产日韩欧美综合| 久久久91精品| 亚洲精品www久久久久久广东| 国产91九色视频| 久久亚洲影音av资源网| 国产精品高清在线观看| 久久久久国产精品免费| 国产日韩欧美综合| 亚洲精品一区av在线播放| 久久久精品电影| 国产精品无av码在线观看| 国产做受69高潮| 亚洲国产精品久久久| 亚洲人成在线一二| 国内精品中文字幕| 亚洲免费视频在线观看| 国产一区二区香蕉| 亚洲欧美激情另类校园| 国产美女搞久久| 欧美激情乱人伦| 久久天堂电影网| 国产精品男人爽免费视频1| 日韩精品久久久久久久玫瑰园| 成人黄色免费片| 久久天天躁夜夜躁狠狠躁2022| 国产精品久久久久久久久免费看| 主播福利视频一区| 亚洲欧美色婷婷| 欧美成人合集magnet| 日韩中文字幕视频在线| 中文字幕亚洲综合久久| 日av在线播放中文不卡| 日韩av在线电影网| 日韩在线免费视频观看| 亚洲一区美女视频在线观看免费| 日本91av在线播放| 91中文在线观看| 国产在线观看不卡| 91久久嫩草影院一区二区| 欧美色videos| 亚洲午夜av电影| 欧美激情一区二区三区久久久| 日韩av网站大全| 成人字幕网zmw| 欧美性猛xxx| 国产在线视频2019最新视频| 欧美在线视频导航| 欧美日韩免费在线| 国产日韩精品一区二区| 欧美最猛黑人xxxx黑人猛叫黄| 久久999免费视频| 亚洲精品www久久久| 青草青草久热精品视频在线网站| 欧美日韩免费在线观看| 青青久久av北条麻妃海外网| 国内精品国产三级国产在线专| 欧美老女人www| 高清欧美性猛交xxxx黑人猛交| 国产美女被下药99| 久久久久久午夜| 欧美理论电影在线观看| 国模gogo一区二区大胆私拍| 亚洲品质视频自拍网| 国产在线视频不卡| 久久久精品一区二区| 性欧美视频videos6一9| 欧美国产日韩一区二区三区| 国产精品偷伦一区二区| 亚洲视频在线免费观看| 欧美特级www| 欧美激情亚洲一区| 亚洲欧美成人精品| 欧美在线观看视频| 欧美日韩国产精品一区| 久久精品一偷一偷国产| 国内精品400部情侣激情| 国产精品www色诱视频| 国产亚洲一区二区精品| 欧美激情一区二区三区高清视频| 亚洲第一级黄色片| 国产日本欧美一区二区三区| 欧美中文在线观看国产| 日韩精品极品在线观看| 日韩av免费网站| 亚洲人成电影网站色www| 亚洲xxx视频| 91在线视频一区| 欧美精品免费在线观看| 亚洲精品自拍第一页| 国产成人精品免高潮在线观看| 欧洲亚洲在线视频| 亚洲成人xxx| 国产精品偷伦一区二区| 深夜福利一区二区| 亚洲欧洲偷拍精品| 日本中文字幕成人| 国产精品成人一区二区| 亚洲成人av片| 亚洲综合色激情五月| 国产亚洲视频在线观看| 欧美激情日韩图片| 久久久国产精品x99av| 在线成人免费网站| 青青a在线精品免费观看| 热草久综合在线| 日韩精品免费在线| 裸体女人亚洲精品一区| 成人午夜小视频| 国产+成+人+亚洲欧洲| 欧美大片va欧美在线播放| 久久久久久久一| 国产丝袜一区二区| 成人网在线观看| 日韩精品视频三区| 97碰在线观看| 国产精品久久不能| 国内精品小视频| 欧美午夜片在线免费观看| 国产亚洲精品成人av久久ww| 亚洲人午夜精品| 国产成人久久久精品一区| 成人久久久久久| 亚洲精品久久久久久久久久久久久| 亚洲三级免费看| 精品福利一区二区| 欧美性在线观看| 91久久久久久久久久久久久| 在线观看亚洲视频| 亚洲午夜av久久乱码| 亚洲精品美女久久久久| 日本高清+成人网在线观看| 亚洲男子天堂网| 亚洲香蕉伊综合在人在线视看| 国产精品成人免费电影| 国产午夜精品一区理论片飘花| 4p变态网欧美系列| 久久久国产精品亚洲一区| 国产精品美女在线| 亚洲区免费影片| 欧美成人在线免费视频| 综合久久五月天| 深夜成人在线观看| 欧美大码xxxx| 亚洲天堂男人天堂| 欧美限制级电影在线观看| 欧美资源在线观看| 久久久黄色av|