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語句的資訊 借助於這個語句,我們也可以分析出,索引對於查詢的作用,以及何時應該可以資料表新增...