MySQL 之 Explain 輸出分析

2021-09-24 09:47:58 字數 1743 閱讀 4493

mysql 之 explain 輸出分析

前面的文章寫過 mysql 的事務和鎖,這篇文章我們來聊聊 mysql 的 explain,估計大家在工作或者面試中多多少少都會接觸過這個。可能工作中實際使用的不多,但是不論的自己學習還是面試,都需要掌握的。

explain 可以使用在select, delete, insert, replace, and update語句中,執行的結果會在每一行顯示用到的每乙個表的詳細資訊。簡單語句可能結果就只有一行,但是複雜的查詢語句會有很多行資料。

在 sql 語句前面加上explain,如:explain select * from a;

舉個例子

create table `a` (`id` int(10) unsigned not null auto_increment,`uid` int(10) unsigned default null,primary key (`id`),key `idx_uid` (`uid`) using btree) engine=innodb auto_increment=1 default charset=utf8;
採用上面的語句explain select * from a;,效果如下

通過我們可以看到執行過後會輸出 12 個字段,那麼每個欄位是什麼意思呢?我們來一一看下

id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows,filtered,extra列名

含義id

查詢語句的標識

select_type

查詢的型別

table

當前行所查的表

partitions

匹配的分割槽

type

訪問型別

possible_keys

查詢可能用到的索引

keymysql 決定採用的索引來優化查詢

key_len

索引 key 的長度

ref顯示了之前的表在key列記錄的索引中查詢值所用的列或常量

rows

查詢掃瞄的行數,預估值,不一定準確

filtered

查詢的錶行佔表的百分比

extra

額外的查詢輔助資訊

1.id: 是用來順序標識整個查詢中 select 語句的,在巢狀查詢中id越大的語句越先執行

2.select_type:

3.table: 每一行引用的表名

4.type: 從上到下效果依次降低

5.possible_key: mysql 可能採用的索引,但是並不一定使用

6.key: mysql 正真使用的索引名稱

7.rows: 預估的掃瞄行數,只能參考不準確

8.extra: 該列包含了很多額外的資訊,包括是否檔案排序,是否有臨時表等,很多時候這個欄位很有用能提供很多資訊

今天簡單的給大家介紹了一些 explain 的輸出資訊,很多時候我們可能在平時很少接觸,但是很多時候我們還是要掌握的。有些東西該記還得記,該背還得背,畢竟這個社會就是比的誰知道的多。

mysql效能優化之EXPLAIN

mysql效能分析及explain用法的知識是本文我們主要要介紹的內容,接下來就讓我們通過一些實際的例子來介紹這一過程,希望能夠對您有所幫助。1.使用explain語句去檢視分析結果 如explain select from test1 where id 1 會出現 id selecttype ta...

MySQL效能優化之explain

在日常工作中,我們會有時會開慢查詢去記錄一些執行時間比較久的sql語句,找出這些sql語句並不意味著完事了,些時我們常常用到explain這個命令來檢視乙個這些sql語句的執行計畫,檢視該sql語句有沒有使用上索引,有沒有做全表掃瞄,這都可以通過explain命令來檢視。所以我們深入了解mysql的...

mysql優化之EXPLAIN語句

explaintbl name 或 explain extended selectselect options explain語句可以用作describe的乙個同義詞,或獲得關於mysql如何執行select語句的資訊 借助於這個語句,我們也可以分析出,索引對於查詢的作用,以及何時應該可以資料表新增...