好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MySQL中通過EXPLAIN如何分析SQL的執行計劃詳解

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

熱門標簽:深圳 地圖標注賺錢真假 陜西400電話如何申請 合肥營銷外呼系統收費 承德電腦地圖標注 外呼系統從哪買 遵義地圖標注app 商家地圖標注哪個好 德惠市地圖標注

前言

在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' ;

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

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

EXPLAIN SELECT * FROM customer WHERE store_id=10;

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

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

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

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

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;

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

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

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

EXPLAIN SELECT * FROM customer WHERE customer_id =10;

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

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

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

.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》

總結

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

您可能感興趣的文章:
  • 詳解 MySQL 執行計劃
  • Mysql深入探索之Explain執行計劃詳析
  • MySQL執行計劃的深入分析
  • mysql執行計劃id為空(UNION關鍵字)詳解
  • MySQL中執行計劃explain命令示例詳解
  • MySql中如何使用 explain 查詢 SQL 的執行計劃
  • mysql執行計劃介紹
  • MYSQL explain 執行計劃
  • 帶你學習MySQL執行計劃

標簽:貴州 贛州 新余 揚州 商丘 巴中 三門峽 南陽

巨人網絡通訊聲明:本文標題《MySQL中通過EXPLAIN如何分析SQL的執行計劃詳解》,本文關鍵詞  MySQL,中,通過,EXPLAIN,如何,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL中通過EXPLAIN如何分析SQL的執行計劃詳解》相關的同類信息!
  • 本頁收集關于MySQL中通過EXPLAIN如何分析SQL的執行計劃詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 美女久久精品| 日本黄色片免费看| 美国一级毛片aa| 乖抬高腿啊叫出来| 91久久精品國產亞洲Av麻| 制服美脚OL在线AV| 朝鲜性护士毛多水多| 国产网红喷水播放| 国产三级久久久精品麻豆三级 | 小婕子交换系列辣文小说下载| 无码人妻av久久久一区二区三区| 撕开胸罩一边亲一边摸| 国产精品毛片一区| 大又黄又粗又爽妇女毛片| 极品美女超短jk??视频| 调教小荡货h小红帽与大灰狼| 成年女性特黄午夜视频免费看| 摸花核| 欧美videosde极品另类| 麻豆白洁少妇系列H| 无码人妻精品一区二区二秋霞影院 | 真实的国产乱ⅩXXX实拍| 欧美综合网| 香港A片毛片免费观看蜜挑成熟时| 国产免费资源高清小视频在线观看| 日韩在线免费视频| 男人舔女人的阴部黄色骚虎视频| 嗯灬啊灬嗯灬用点力灬水软件视频| 婷婷国产亚洲精品网站| 伊人网色| 国产精品无码A在线播放| 搞黄色小说| 一级黄色在线看| 性欧美free| 亚洲国产精品97久久无色无码| 欧美国产日产韩国图片| 啊啊啊啊好大| 黄色生活视频| 中文字幕一区2区3区| 久久电影www成人网| 动漫美女被触手怪还被|