MySQL數(shù)據(jù)庫中,在SELECT查詢語句前邊加上“EXPLAIN”或者“DESC”關(guān)鍵字,即可查看該查詢語句的執(zhí)行計(jì)劃,分析執(zhí)行計(jì)劃是優(yōu)化慢查詢的重要手段原叮。如:
EXPLAIN SELECT * FROM school;
DESC SELECT * FROM school;
執(zhí)行結(jié)果:
接下來對(duì)這10個(gè)參數(shù)進(jìn)行簡(jiǎn)單解釋:
1、id:在整個(gè)查詢中SELECT的位置巡蘸;
2奋隶、select_type:查詢的類型,包括沒有子查詢的簡(jiǎn)單查詢悦荒、UNION唯欣、子查詢、外部查詢逾冬、外部查詢中的子查詢或FROM語句中的子查詢等黍聂;
3、table:所查詢的表名身腻;
4、type:連接如何執(zhí)行的情況匹厘。這里存在很多值嘀趟,范圍從const(最佳)到ALL(最差);
5愈诚、possible_keys:為了提高查詢速度她按,在MySQL中可以使用的索引;
6炕柔、key:實(shí)際使用的索引酌泰;
7、key_len:索引的長(zhǎng)度匕累;
8陵刹、ref:使用哪一列或常數(shù)與key一起從表中選擇行;
9欢嘿、rows:MySQL需要在相應(yīng)表中為了成功進(jìn)行查詢衰琐,進(jìn)行檢驗(yàn)的行的數(shù)量。為了得出總行數(shù)炼蹦,MySQL必須掃描處理整個(gè)查詢羡宙,再乘以每個(gè)表的行值;
10掐隐、Extra:其他信息狗热,涉及MySQL如何處理查詢,比如說,使用WHERE語句匿刮、使用一個(gè)索引僧凰、利用一個(gè)臨時(shí)表等;
其中select_type可以是:
SIMPLE
PRIMARY
UNION
DEPENDENT UNION
UNION RESULT
SUBQUERY
DEPENDENT SUBQUERY
DERIVED
type可以是:
system
const
eq_ref
ref
ref_or_null
index_merge
unique_subquery
index_subquery
range
index
ALL
Extra可以是:
Distinct
Not exists
range checked for each record (index map
Using filesort
Using index
Using temporary
Using where
Using sort_union(...), Using union(...), Using intersect(...)
Using index for group-by