mysql 重新整理——索引優化explain字段介紹二 [十]

前言

緊接上文。

正文

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

字段比較多,就不詳細介紹了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章