基本含義
詳細id
包含一組數字,表示查詢中執行select子句或操作表的順序
id相同,執行順序由上至下。
如果是子查詢,id的序號會遞增,id值越大優先順序越高,越先被執行
id如果相同,可以認為是一組,從上往下順序執行;在所有組中,id值越大,優先順序越高,越先執行
select_type
表示查詢中每個select子句的型別(簡單 or複雜)
型別釋義
******
查詢中不包含子查詢或者union
primary
查詢中若包含任何複雜的子部分,最外層查詢則被標記為:primary
subquery
在select或where列表中包含了子查詢,該子查詢被標記為:subquery
derived(衍生)
在from列表中包含的子查詢被標記為:derived(衍生)
derived
若第二個select出現在union之後,則被標記為union;若union包含在 from子句的子查詢中,外層select將被標記為:derived
union result
從union表獲取結果的select被標記為:union result
type
表示mysql在表中找到所需行的方式,又稱「訪問型別」,常見型別如下:
all, index, range, ref, eq_ref, const, system, null
由左至右, 由最差到最好。
方式釋義
allfull table scan, mysql將遍歷全表以找到匹配的行
表掃瞄index
full index scan,index與all區別為index型別只遍歷索引樹
索引掃瞄
range
索引範圍掃瞄,對索引的掃瞄開始於某一點,返回匹配值域的行,常見於between、<、>等的查詢
範圍掃瞄
ref非唯一性索引掃瞄,返回匹配某個單獨值的所有行。常見於使用非唯一索引即唯一索引的非唯一字首進行的查詢
索引查詢?
eq_ref
唯一性索引掃瞄,對於每個索引鍵,表中只有一條記錄與之匹配。常見於主鍵或唯一索引掃瞄
唯一鍵查詢?
const, system
當mysql對查詢某部分進行優化,並轉換為乙個常量時,使用這些型別訪問。如將主鍵置於where列表中,mysql就能將該查詢轉換為乙個常量
system是const型別的特例,當查詢的表只有一行的情況下, 使用system
常量null
mysql在優化過程中分解語句,執行時甚至不用訪問表或索引
possible_keys
指出mysql能使用哪個索引在表中找到行,查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢使用
key顯示mysql在查詢中實際使用的索引,若沒有使用索引,顯示為null
tips:查詢中若使用了覆蓋索引,則該索引僅出現在key列表中
ref表示索引中使用的位元組數,可通過該列計算查詢中使用的索引的長度
extra
包含不適合在其他列中顯示但十分重要的額外資訊
mysql執行計畫 MySQL 執行計畫
1.執行計畫的定義 什麼是執行計畫 查詢計畫 呢?執行計畫就是一系列的操作步驟。sql是宣告性語言,它只告訴資料庫要查詢什麼,但並不告訴資料庫如何去查。資料庫所要做的就是基於演算法和統計資訊計算出一條最佳的訪問路徑。這個工作是由優化器來完成的。優化器會比較不同的執行計畫,然後選擇其中最優的一套。2....
mysql 生成執行計畫 MySQL執行計畫
和很多其他關係型資料庫不通,mysql並不會在生成查詢位元組碼來執行查詢。mysql生成查詢的一棵指令樹,然後通過儲存引擎執行完成這棵指令樹並返回結果。最終的執行計畫包含了重構查詢的全部資訊。如果某個查詢執行explain extended 之後,在執行show warnings,就可以看到重構出的...
mysql 查詢執行計畫 MySql執行計畫的檢視
一。什麼是資料庫執行計畫 利用乙個sql語句,你可能要server取出所有news表中的資訊.當server收到的這條sql的時候,第一件事情並不是解析它.如果這條sql沒有語法錯誤,server才會繼續工作.server會決定最好的計算方式.server會選擇,是讀整個news表好呢,還是利用索引...