MySQL explain字段解釋


1.select_type

  simple :它表示簡單的select,沒有union和子查詢

       dependent union:union依賴外層的查詢

  dependent subquery:subquery依賴外層的查詢

2.type

  system:表僅有一行,這是const類型的特列,平時不會出現,一般出現在mysql內建系統表中

  const :表最多有一個匹配行,const用於比較primary key 或者unique索引。因為只匹配一行數據,所以很快

  eq_ref:對於每個來自於前面的表(連接表)的行,只從該表(被連接表)中讀取一行。這可能是最好的聯接類型,除了const類型。它用在一個索引的所有部分被聯接使用並且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用於使用=比較帶索引的列。

  ref 對於每個來自於前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果不能滿足只去一行的情況,會使用索引,則使用ref。如果使用的鍵僅僅匹配少量行,該聯接類型是不錯的。

  range :給定范圍內的檢索,比如 in(xx,xxxx) 或者 between

  index  :該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小,一般在使用了覆蓋索引優化的情況下使用

  all: 對於每個來自於先前的表的行組合,進行完整的表掃描。

 

    index_merge:該聯接類型表示使用了索引合並優化方法 常見如 :  idx1 = ? or idx2 = ?

key

  MYSQL執行計划使用的索引

 

ref

 和前方表連接的字段,const代表是常量值連接

 

 rows 

  顯示MYSQL執行查詢的行數,簡單且重要,數值越大越不好

 

extra

  Distinct : 一旦MYSQL找到了與行相聯合匹配的行,就不再搜索了

  Range checked for each: 沒有找到理想的索引,因此對於從前面表中來的每一個行組合,MYSQL檢查使用哪個索引,並用它來從表中返回行。這是使用索引的最慢的連接之一 

  Using filesort: 發生了硬盤或內存排序,一般是由order by 或 group by觸發的;典型的情況,排序的字段不是驅動表的字段,則會使用臨時表將數據都添加進去,最后進行排序,如果數據大則硬盤排序,如果小則內存排序.

  Using index :列數據是從僅僅使用了索引中的信息而沒有讀取實際的行動的表返回的,使用了覆蓋索引優化

  Using temporary :使用了臨時表,通常和filesort一起發生. 典型情況:使用了派生表.

  Using where: 數據庫服務層從存儲引擎提取了數據又進行了一次條件過濾

  using index condition: ICP優化,從5.6之后提供.將過濾條件下推到存儲引擎層執行,能更好的利用復合索引來過濾數據,減少IO.

    Using index for group-by:使用了松散索引掃描

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM