explain顯示了mysql如何使用索引來處理select語句以及鏈接表。能夠幫助選擇更好的索引和寫出更優化的查詢語句。使用方法,在select語句前加上explain就能夠了mysql
table:顯示這一行的數據是關於哪張表的sql
type:這是重要的列,顯示鏈接使用了何種類型。從最好到最差的鏈接類型爲const、eq_reg、ref、range、indexhe和ALL優化
possible_keys:顯示可能應用在這張表中的索引。若是爲空,沒有可能的索引。能夠爲相關的域從WHERE語句中選擇一個合適的語句spa
key: 實際使用的索引。若是爲NULL,則沒有使用索引。不多的狀況下,MYSQL會選擇優化不足的索引。這種狀況下,能夠在SELECT語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MYSQL忽略索引orm
key_len:使用的索引的長度。在不損失精確性的狀況下,長度越短越好blog
ref:顯示索引的哪一列被使用了,若是可能的話,是一個常數遞歸
rows:MYSQL認爲必須檢查的用來返回請求數據的行數索引
Extra:關於MYSQL如何解析查詢的額外信息。it
BEGINtable
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp = '$';
SET sTempChd = CAST(menuId AS CHAR);
WHILE sTempChd IS NOT NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(menu_id) INTO sTempChd FROM menu WHERE FIND_IN_SET(parent_menu_id,sTempChd)>0;
起到遞歸查詢的做用?
END WHILE;
RETURN sTemp;
END
http://xdj651897373-126-com.iteye.com/blog/1819924