mysql explain詳解
點擊上方藍色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時間送達
? 作者?|??瓦斯突突突
來源 |? urlify.cn/Aj67Jb
適合創(chuàng)建索引的情況
頻繁作為查詢條件的字段
查詢中與其它表關(guān)聯(lián)的字段(左外連接建到右表字段上,右外連接建到左表字段上)
查詢中排序的字段, 排序字段若通過索引去訪問將大大提高排序速度
查詢中統(tǒng)計或者分組字段
不適合創(chuàng)建索引的情況
表記錄太少
經(jīng)常增刪改的表或者字段
Explain 性能分析(sql執(zhí)行計劃)
能干嘛?
表的讀取順序(id)
select查詢的類型(數(shù)據(jù)讀取類型 select_type)
哪些索引可以使用
哪些索引被使用
表之間的引用
每張表有多少行被優(yōu)化器查詢
Explain各字段含義
Using filesort :說明 mysql 會對數(shù)據(jù)使用一個外部的索引排序, 而不是按照表內(nèi)的索引順序進行讀取。MySQL 中無法利用索引完成的排序操作稱為“文件排序”
Using temporary :使了用臨時表保存中間結(jié)果,MySQL 在對查詢結(jié)果排序時使用臨時表。常見于排序 order by 和分組查詢group by
Using index :代表表示相應(yīng)的 select 操作中使用了覆蓋索引(Covering Index), 避免訪問了表的數(shù)據(jù)行, 效率不錯!
rows 列顯示 MySQL 認為它執(zhí)行查詢時必須檢查的行數(shù)。越少越好!
ref顯示索引的哪一列被使用了,如果可能的話,是一個常數(shù),哪些列或者常量被用于查找索引列上的值。只有當(dāng)type為ref級別以上的時候,ref這列才會有值
表示索引中使用的字節(jié)數(shù), 可通過該列計算查詢中使用的索引的長度。key_len 字段能夠幫你檢查是否充分的利用上了索引,ken_len 越長, 說明索引使用的越充分
實際使用的索引。如果為NULL, 則沒有使用索引
顯示可能應(yīng)用在這張表中的索引, 一個或多個。查詢涉及到的字段上若存在索引, 則該索引將被列出, 但不一定被查詢實際使用
意義:type是查詢的訪問類型,是較為重要的一個指標(biāo),結(jié)果值從最好到最壞依次是:system > const > eq_ref > ref > range > index > ALL ,一般來說, 得保證查詢至少達到 range 級別, 最好能達到 ref
system:表只有一行記錄(等于系統(tǒng)表), 這是 const 類型的特列, 平時不會出現(xiàn), 這個也可以忽略不計
const:單表中最多有一個匹配行,查詢起來非常迅速,例如根據(jù)主鍵或唯一索引查詢 (單表)
eq_ref:eq_ref用于聯(lián)表查詢(被聯(lián))的情況,按聯(lián)表的主鍵或唯一鍵聯(lián)合查詢。唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配 (聯(lián)表)
ref:使用非唯一索引或非唯一索引前綴進行的查找
range:掃描部分索引,索引范圍掃描,對索引的掃描開始于某一點,返回匹配值域的行,常見于between、<、>等的查詢
index:掃描全部索引樹
all:掃描全表,不走索引,或者說沒有索引
這個數(shù)據(jù)是基于哪張表的
意義 : select查詢的類型,主要是區(qū)別普通查詢和聯(lián)合查詢、子查詢之類的復(fù)雜查詢,辨識查詢的類型,調(diào)整查詢方式
simple:簡單的select,不使用UNION或者子查詢
primary:最外層select
derived:在 from 列表中包含的子查詢被標(biāo)記為derived(衍生)
subquery:在select或where列表中包含了子查詢
depedent subquery:在select或where列表中包含了子查詢,子查詢基于外層
union:若第二個select出現(xiàn)在union之后, 則被標(biāo)記為union
union resulet:從union表獲取結(jié)果的select
意義 : select 查詢的序列號,包含一組數(shù)字,表示查詢中執(zhí)行 select 子句或操作表的順序
id相同 : 執(zhí)行順序由上至下
id不同 : 如果是子查詢,id 的序號會遞增,id 值越大優(yōu)先級越高,越先被執(zhí)行
id有相同也有不同 : id如果相同,可以認為是一組,從上往下順序執(zhí)行;在所有組中,id值越大,優(yōu)先級越高,越先執(zhí)行
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra 其他額外信息
粉絲福利:108本java從入門到大神精選電子書領(lǐng)取
???
?長按上方鋒哥微信二維碼?2 秒 備注「1234」即可獲取資料以及 可以進入java1234官方微信群
感謝點贊支持下哈?
