mysql explain 說明

mysql explain 說明

總結學習一下mysql的explain 。innodb

說明
id 就是每個sql的編號,有以下原則:
1.id越大,越優(yōu)先執(zhí)行。
2. id相同就從上往下執(zhí)行。
3. id為null最后執(zhí)行
select_type 對應的查詢類型(是簡單查詢還是復雜的聯(lián)合)。
simple:簡單查詢,不包含union和join。
primay:最外層的select
subquery:包含再select 中的查詢
derived:包含再from的子查詢,就是一個臨時的結果表。
union:再union第二個跟著的select
table 對應的行訪問那個表
type 非常重要:代表對應的行關聯(lián)或者訪問的類型(就是訪問是索引樹還是常量等)。
NULL:在優(yōu)化階段就已經(jīng)得到了結果了,不需要再掃描索引了。比如:select min(id) from film; 【ID主鍵索引】
const、system:就是可以直接將查詢結果優(yōu)化成常量返回。system就是const的特例,就是只有1條結果的常量
eq_ref:直接關聯(lián)或者匹配主鍵索引
ref:不是主鍵索引,而是二級索引,需要回表(回溯主鍵索引拉取數(shù)據(jù))
range:查詢一個索引的范圍。
index:需要全表掃描索引獲取結果。就是不從B+樹的根節(jié)點查找,而是掃描某個二級索引的葉子節(jié)點掃描(因為二級索引小,而聚簇索引大,如果掃描聚簇索引那么消耗的內存比較多),然后得到的主鍵再回表帶出所有結果。
ALL:全表掃描,直接掃描聚簇索引葉子節(jié)點的數(shù)據(jù)
possible_key 優(yōu)化階段mysql覺得可能走的key。具體的索引取決于執(zhí)行的時候
key 執(zhí)行階段真正走的索引??梢灾苯邮褂胒orce_index強制走某個索引
key_len 具體走了哪幾個索引。比如索引:【name_age】,那么使用這個長度就是name字段的字節(jié)數(shù)+age的字節(jié)數(shù)。這個一般用再聯(lián)合索引上,可以具體算出走了那幾個索引,進行繼續(xù)優(yōu)化
ref 這一列顯示了在key列記錄的索引中,表查找值所用到的列或常量,常見的有:const(常量),字段名(例:film.id)
rows 預估掃描的行數(shù),不準確,僅供參考
Extra 顯示額外的信息。
Using Index:使用了覆蓋索引。就是查詢的值可以直接從對應的索引中全部帶出【完美不需要優(yōu)化】
UsingWhere:使用where處理,并沒有走覆蓋索引???啥JB玩意,不懂【還可以,不需要優(yōu)化】
Using index condition:查詢的列不能完全被索引覆蓋。。Where前導列范圍??啥JB玩意,不懂【還可以,不需要優(yōu)化】
Using temporay:mysql 需要一個臨時的地方處理。【一般,需要優(yōu)化】
Using filesort:參與排序的數(shù)據(jù)量非常大,無法再內存中處理【差勁!需要優(yōu)化】
Select tables optimized away:使用某些聚合函數(shù)(如min、max)。來訪問索引再某個字段。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容