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

前言

緊接上文。性能

正文

type

type字段有以下類型:優化

1.all.net

2.index設計

3.rangblog

4.ref索引

5.eq_refget

6.const,systemselect

7.nullim

最好到最差的順序爲:統計

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

顯示是額外的信息。

這一篇比較詳細:

http://www.javashuo.com/article/p-ugsjcqsm-mc.html

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

相關文章
相關標籤/搜索