前言
緊接上文。
正文
type
type字段有如下類型:
1.all
2.index
3.rang
4.ref
5.eq_ref
6.const,system
7.null
最好到最差的順序爲:
system>const>eq_red>ref>range>index>all
優化的標準爲至少達到range級別,最好是ref級別。
system 表只有一行記錄,這是const類型的特列,基本不會出現。
const:表示通過一次就找到了,const 一般是在primary_key 或者 unique 索引。因爲只匹配一行數據,所以很快。
eq_ref:唯一索引掃描,對每個索引鍵,只有一條記錄與之匹配。
ref:非唯一索引掃描,返回匹配某個值的所有行。
range:只檢索給定範圍的行,使用一個索引來選擇行。一般出現在between、>、<、in等查詢中。
index:select id from t1 這時候是找出全部的索引,而不必去掃描表。
all 表示全表掃描來查詢性能最低。
possible_key 、 key、key_len
possible_key 顯示可能應用在這張表中的索引,一個或者多個。
查詢設計的字段上若存在索引,則該索引將會被列出,但是不一定被使用。
其實這個就是我們寫在where 中用到的索引。
key 爲實際使用的索引。
有三種情況:
第一種:possible_key 爲null ,而key 不爲空,一般就是索引掃描,別名覆蓋索引。
第二種:possible_key 有一個或者多個,然後key顯示一個。
第三個:possible_key 爲null,然後key爲null。
key_len:表示索引中使用的字節數,可通過該列計算查詢中使用的索引的長度。在不損失精確性的情況下,越短越好。
key_len 顯示的值爲索引字段的最大可能長度,並非實際長度,即:key_len 是根據表定義計算而得,不是通過表內檢索出的。
ref
顯示索引的那一列被使用了,如果可能的話,是一個常數。那些列或者常量被用於查找索引列上的值。
rows
根據統計信息及索引選用情況,大致估算出找到所需的記錄鎖需要讀取的行數。
每張表有優化器查詢的行數,這個比較好理解。
extra
顯示是額外的信息。
這一篇比較詳細:
https://blog.csdn.net/poxiaonie/article/details/77757471
字段比較多,就不詳細介紹了。