一、用法及定義: explain為sql的執行計劃、在sql前面加上explain關鍵字即可 如:explain select * from tbl_emp; 名詞解釋: id:【操作表的順序】 1.id相同,表的執行順序從上往下依次執行 2.id不同,id越大的越先執行 3.id相同和不同的一起, ...
一、用法及定義:
explain為sql的執行計劃、在sql前面加上explain關鍵字即可
如:explain select * from tbl_emp;
名詞解釋:
id:【操作表的順序】
1.id相同,表的執行順序從上往下依次執行
2.id不同,id越大的越先執行
3.id相同和不同的一起,越大的先執行,然後再按順序從上往下依次執行
select_type:查詢類型【區分簡單查詢,子查詢,聯合查詢】
一般有:SIMPLE[最簡答的sql查詢],PRIMARY[查詢中若包含任何複雜的子查詢,最外層查詢則被標記],
SUBQUERY[在select或where列表中包含子查詢]
UNION
.............
type:訪問類型【最好到最差】
system > const > eq_ref > ref > range > index> ALL
一般達到range級別就好,最好達到ref
possible:顯示可能應用到這張表的索引,一個或者多個;查詢涉及到的欄位上若存在索引,則該索引將被列出,但不一定被查詢實際使用。
簡單說:MySQL推測,理論上可能用到的索引,但不一定被查詢實際使用
key:查詢實際用到的索引,如果為NULL,要麼沒建要麼沒用到,或者索引失效
覆蓋索引:select後面查詢的欄位和所建複合索引的個數和順序一模一樣
如果理論上沒有,而key中出現了,則是使用了覆蓋索引
ref:顯示索引的哪一列被使用了
rows:越小越好
Extra:不要出現最好、Using filesort[文件內排序]
二、作用:
實例: