上官網看執行計劃文檔釋義,移步 此部分在MySQL官方文檔中的結構屬於優化(Optimization)-理解查詢執行計劃(Understanding the Query Execution Plan)。 此部分一共包括5個部分內容: 1,使用explain優化查詢 2,explain輸出內容釋義 3 ...
上官網看執行計劃文檔釋義,移步
此部分在MySQL官方文檔中的結構屬於優化(Optimization)-理解查詢執行計劃(Understanding the Query Execution Plan)。
此部分一共包括5個部分內容:
1,使用explain優化查詢
2,explain輸出內容釋義
3,擴展explain輸出格式
4,獲取命名連接的執行計劃信息
5,預估查詢性能
一. 使用explain優化查詢
explain適用於select,delete,update,insert,replace語句
對於select語句,可以通過show warnings顯示額外信息
輔助分區表的查詢,這部分請參閱官網Obtaining Information About Partitions。
二. explain輸出內容釋義
官網給了完整的釋義,翻譯就是:
id:查詢標識符,id相同-按順序執行;id不同-數字越大的先執行。在聯合查詢(union)中可以為空。
select_type:查詢類型,主要分類有:
SIMPLE 簡單查詢,沒有用聯合或子查詢
PRIMARY 查詢中有子部分,最外圍的叫primary
含UNION關鍵字 聯合查詢
SUBQUERY 子查詢
DERIVED from列表中包含的子查詢
MATERIALIZED subquery的一種,物化子查詢
table:表名稱
partitions:表分區信息
type:連接查詢類型(表連接,如left join,right join,多表連接,複雜查詢等等)
從好到壞的順序為:system,const,eq_ref,ref,fulltext,ref or null,index merge,unique subquery,index subquery,range,index(索引掃描),ALL(全表掃描)
possible_keys:可能使用的索引
key:實際使用的索引
key_len:索引中使用的位元組長度,長度越短越好
ref:索引的哪一列被使用
rows:預估查詢的行數
filtered:條件過濾後,留存記錄數的百分比。100即是沒有過濾,比如id=1這樣的條件;數值越靠近100(越大)越好。
Extra:附加信息,解析查詢的額外信息
三. 擴展explain輸出格式
和show warnings配合使用
explain select * from city;
show warnings;
特殊標記在這裡。
四. 獲取命名連接的執行計劃信息
舉例:
SELECT CONNECTION_ID();
EXPLAIN FOR CONNECTION 750;
show processlist;
explain for connection 771;
五. 預估查詢性能
通過計算磁碟尋道來預估查詢性能。
計算key_len的值,
參考:
作者:hangwei
出處:http://www.cnblogs.com/hangwei/
關於作者:專註於開源平臺,分散式系統的架構設計與開發、資料庫性能調優等工作。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
如果您覺得文章對您有幫助,可以點擊文章右下角“推薦”一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!