1. 程式人生 > 其它 >explain的欄位有哪些?

explain的欄位有哪些?

  • Id:表示select子句或者操作表的順序,執行順序從大到小執行,當id一樣時,執行順序從上往下。
  • Select_type:表示查詢中每個select子句的型別,例如simple表示不包含子查詢、表連線或其他複雜語法的簡單查詢,primary表示複雜查詢的最外層查詢,subquery表示在select或where列表中包含了子查詢。

例如:

EXPLAIN select * from sc where sname ='李君'

explain SELECT *

FROM score AS a

WHERE degree < (SELECT AVG(degree) FROM score AS b WHERE a.cno = b.cno)

  • Type:表示訪問型別,效能由差到好為:All全表掃描;index索引全掃描;range索引範圍掃描;ref返回匹配某個單獨值所有行,常見於使用非唯一索引或唯一索引的非唯一字首進行的查詢,也經常出現在join操作中;eq_ref唯一性索引掃描,對於每個索引鍵只有一條記錄與之匹配,const當MySQL對查詢某部分進行優化,並轉為一個常量時,使用這些訪問型別,例如將主鍵或唯一索引置於where列表就能將該查詢轉為一個const。system表中只有一行資料或空表,只能用於myISAM和memory表,null執行時不用訪問表或索引就能得到結果。SQL效能優化的目標:至少要達到range級別,要求是ref級別,如果是consts最好。
  • Possible_keys:表示查詢時可能用到的索引,但不一定適用。列出大量可能索引時意味著備選索引數量太多了。
  • Key:顯示MySQL在查詢時實際使用的索引,如果沒有使用則顯示為null。
  • Key_len:表示使用到索引欄位的長度,可通過該列計算查詢中使用的索引的長度,對於確認索引有效性以及多列索引中用到的列數目很重要。
  • Ref:表示上述表的連線匹配條件,即哪些列或常量被用於查詢索引列上的值。
  • Rows:表示MySQL根據表統計資訊及索引選用情況,估算找到所需記錄所需要讀取的行數。
  • Extra:表示額外資訊,例如using temporary表示需要使用臨時表儲存結果集,常見於排序和分組查詢。Using filesort表示無法利用索引完成的檔案排序,這是order by的結果,可以通過合適的索引改進效能。Using index表示只需要使用索引就可以滿足查詢表的要求,說明表在使用覆蓋索引。
歡迎批評指正,提出問題,謝謝!