首先需要注意:MYSQL 5.6.3以前只能EXPLAIN SELECT; MYSQL5.6.3以后就可以EXPLAIN SELECT,UPDATE,DELETE刻像。
關(guān)鍵參數(shù)一:type。顯示訪問使用了何種類型悯舟。效率是依次增高噩凹。
1.all:代表全表掃描挫以。一般情況下谬莹,出現(xiàn)這樣的sql語(yǔ)句時(shí),而且數(shù)據(jù)量比較大翁锡,就要對(duì)sql進(jìn)行一定的優(yōu)化蔓挖,性能最差。
2.index:查詢的字段上就有索引馆衔。又叫索引全表掃描瘟判,把索引從頭到尾掃一遍。
3.range:索引范圍查詢角溃。常見于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等運(yùn)算符的查詢中拷获。
4.ref:命中非唯一索引。ref可用于使用’=‘或’<=>'操作符作比較的索引列减细。
5.const:命中主鍵索引或者唯一索引匆瓜。這種情況下,只會(huì)有一條數(shù)據(jù)。
關(guān)鍵參數(shù)二:key驮吱。
null:代表沒有命中索引茧妒。
顯示索引的名稱(如表中顯示的person_id):代表命中索引。
關(guān)鍵參數(shù)三:rows左冬。
估算出所需數(shù)據(jù)需要讀取的具體行數(shù)(不是精確值)桐筏,直接反應(yīng)sql找了多少數(shù)據(jù),非常直觀顯示 sql的效率好壞拇砰。在完成目的的情況下梅忌,原則上是越少越好。
關(guān)鍵參數(shù)四:extra毕匀。sql的額外信息。
1.distinct:代表在select部分使用了distinc關(guān)鍵字癌别。
2.using? filesrt:代表排序并沒有用到索引皂岔。
3.using? temporary:代表查詢時(shí)創(chuàng)建了臨時(shí)表。