一、用法及定義:
explain為sql的執(zhí)行計(jì)劃、在sql前面加上explain關(guān)鍵字即可
如:explain select * from tbl_emp;
名詞解釋:
id:【操作表的順序】
1.id相同,表的執(zhí)行順序從上往下依次執(zhí)行
2.id不同,id越大的越先執(zhí)行
3.id相同和不同的一起,越大的先執(zhí)行,然后再按順序從上往下依次執(zhí)行
select_type:查詢類(lèi)型【區(qū)分簡(jiǎn)單查詢,子查詢,聯(lián)合查詢】
一般有:SIMPLE[最簡(jiǎn)答的sql查詢],PRIMARY[查詢中若包含任何復(fù)雜的子查詢,最外層查詢則被標(biāo)記](méi),
SUBQUERY[在select或where列表中包含子查詢]
………….?
type:訪問(wèn)類(lèi)型【最好到最差】
system > const > eq_ref > ref > range > index> ALL
??
一般達(dá)到range級(jí)別就好,最好達(dá)到ref
?
possible:顯示可能應(yīng)用到這張表的索引,一個(gè)或者多個(gè);查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢實(shí)際使用。
簡(jiǎn)單說(shuō):mysql推測(cè),理論上可能用到的索引,但不一定被查詢實(shí)際使用
key:查詢實(shí)際用到的索引,如果為NULL,要么沒(méi)建要么沒(méi)用到,或者索引失效
覆蓋索引:select后面查詢的字段和所建復(fù)合索引的個(gè)數(shù)和順序一模一樣
如果理論上沒(méi)有,而key中出現(xiàn)了,則是使用了覆蓋索引
ref:顯示索引的哪一列被使用了
rows:越小越好
Extra:不要出現(xiàn)using filesort[文件內(nèi)排序],using index(索引掃描,出現(xiàn)好一點(diǎn))
二、作用:
?
?實(shí)例: