MySQL性能分析之explain

explain分析

EXPLAIN SELECT * FROM order WHERE id>2 AND order_sn<>''

結果:
在這裏插入圖片描述
說明:

  • id:一組數字,操作順序,如果id相同,則執行的順序就由上至下,如果是子查詢,id的序號遞增,值越大優先級越高,越先被執行;
  • select_type:表示每個字句的類型,簡單還是複雜,取值如下:
參數 描述
simple 簡單查詢,無子查詢或union等
primary 查詢中若包含複雜的子部分,最外層則被標記爲primary
subquery 在select或where中若包含子查詢,則該子查詢被標記爲subquery
derived from中包含子查詢,被標記爲derived
union 若select出現在union之後,則被標記爲union
union result 從union表中獲取結果的select將被標記爲union result
  • table:查詢的數據庫表名稱
  • type:聯合查詢使用的類型
參數 描述
all 全表掃描
index 全表掃描,只是掃描表的時候按照索引次序進行而不是行。主要優點就是避免了排序,但是開銷仍然非常大。
range 索引範圍掃描。
ref 非唯一索引掃描,較返回匹配單獨值的所有行,常見於使用非唯一性索引或唯一性索引的非唯一前綴進行的查找。
eq_ref 唯一性索引掃描。
const、system 當MySQL對查詢的某部分進行優化,並轉換爲一個常量時。如果將主鍵置於where列表中,MySQL就能將該查詢轉換爲一個常量。system時const的特列,當查詢的表只有一行的情況下,即可使用system。
  • possible_keys:指出MySQL能使用哪個索引在表中找到行,查詢涉及的字段上若存在索引,則該索引將被列出。如果爲空,說明沒有可用的索引。
  • key:使用到了哪個索引,這裏列出的是實際使用到的索引,若沒有使用索引,則顯示爲null。
  • key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好。
  • ref:顯示索引的哪一列被使用了。
  • rows:MySQL認爲必須檢查的用來返回請求數據的行數。找到所需記錄,需要讀取的行數,越少越好。
  • Extra:不適合在其他列顯示,但卻十分重要的信息,常見的有如下值:
取值 說明
Using index 使用了索引檢索。
where used 使用了where限制,但是用索引還不夠。
Using temporary 需要使用臨時表來存儲結果集,常見於排序和分組查詢。性能差。
Using filesoft 使用了文件排序,性能差。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章