explain詳解

這裏寫圖片描述

(1)id

id:代表select 語句的編號, 如果是連接查詢,表之間是平等關係, select 編號都是1,從1開始. 如果某select中有子查詢,則編號遞增.

(2)select_type

select_type: 查詢類型

這裏寫圖片描述

(3)table

table: 查詢針對的表

有可能是實際的表名 如select * from t1;也有可能是表的別名如 select * from t2 as tmp;
derived:如from型子查詢時
null:直接計算得結果,不用走表

(4)possible_key

possible_key: 可能用到的索引
注意: 系統估計可能用的幾個索引,但最終,只能用1個.

(5)key&key_len

key : 最終用的索引.
key_len: 使用的索引的最大長度

注: 有可能possible_keys爲NULL,而key不爲NULL這種情況.
possible_keys分析的是索引用於查找的過程,
而最終的key可能是被用於查找,排序,或索引覆蓋

(6)type

type列: 是指查詢的方式, 非常重要,是分析”查數據過程”的重要依據

1)all

意味着從表的第1行,往後,逐行做全表掃描.,運氣不好掃描到最後一行.

這裏寫圖片描述

2)index

index: 比all性能稍好一點,
通俗的說: all 掃描所有的數據行,相當於data_all index 掃描所有的索引節點,相當於index_all

兩種情況可能出現:

  • 索引覆蓋的查詢情況下, 能利用上索引數據,但利用不上索引查找,必須全索引掃描.

這裏寫圖片描述

  • 是利用索引來進行排序

這裏寫圖片描述

3)range

range: 意思是查詢時,能根據索引做範圍的掃描

這裏寫圖片描述

4)ref

ref 意思是指 通過索引列,可以直接引用到某些數據行

這裏寫圖片描述

t15表中在cat_id和price字段上有符合索引,使用下面的sql語句會使用到複合索引,有可能可以取到多行數據,這裏取到了982條數據,所以爲type爲ref。

這裏寫圖片描述

5)eq_ref

eq_ref 是指,通過索引列,直接引用某1行數據,常見於連接查詢中

這裏寫圖片描述

6)const, system, null

這3個分別指查詢優化到常量級別, 甚至不需要查找時間.

這裏寫圖片描述

(7)ref

指連接查詢時, 表之間的字段引用關係.

這裏寫圖片描述

(8)rows

rows : 是指估計要掃描多少行.

(9)extra

index: 是指用到了索引覆蓋,效率非常高
using where 是指光靠索引定位不了,還得where判斷一下
using temporary 是指用上了臨時表, group by 與order by 不同列時,或group by ,order by 別的表的列.
using filesort : 文件排序(文件可能在磁盤,也可能在內存),

發佈了122 篇原創文章 · 獲贊 40 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章