MySQL執(zhí)行計(jì)劃參數(shù)詳解

MySQL數(shù)據(jù)庫(kù)中,在SELECT查詢語(yǔ)句前邊加上“EXPLAIN”或者“DESC”關(guān)鍵字,即可查看該查詢語(yǔ)句的執(zhí)行計(jì)劃,分析執(zhí)行計(jì)劃是優(yōu)化慢查詢的重要手段。如:

EXPLAIN SELECT * FROM school;
DESC    SELECT * FROM school;

執(zhí)行結(jié)果:


執(zhí)行計(jì)劃參數(shù).png

接下來(lái)對(duì)這10個(gè)參數(shù)進(jìn)行簡(jiǎn)單解釋:

1、id:在整個(gè)查詢中SELECT的位置;

2、select_type:查詢的類型,包括沒(méi)有子查詢的簡(jiǎn)單查詢、UNION、子查詢、外部查詢、外部查詢中的子查詢或FROM語(yǔ)句中的子查詢等;

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如何處理查詢,比如說(shuō),使用WHERE語(yǔ)句、使用一個(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容