id
select_type
table
partitions
type
possible_keys
keykey_len
refrows
filtered
extra
執行順序
查詢型別
目標表目標分割槽
連線使用的型別
可能使用的索引
實際選擇的索引
使用的索引的長度
顯示索引的哪一列被使用了
執行行數
按表條件過濾行的百分比
附加資訊
1******
t_level_type
refprimary
primary
152const
2510
1.11
using where
1******
t_flow_main
all3309759
0using where; using join buffer (block nested loop)
列名json name
meaning
idselect_id
查詢序列號 ,或執行順序提示資訊。mysql query optimizer 選定的執行計畫中查詢的序列號。表示查詢中執行 select 子句或操作表的順序, id 值越大優先順序越高,越先被執行。 id 相同,執行順序由上至下。
select_type
none
查詢型別
table
table_name
查詢目標(表),輸出行所引用的表
partitions
partitions
查詢目標(分割槽),匹配的分割槽
type
access_type
連線使用的型別
possible_keys
possible_keys
指出 mysql 能在該表中使用哪些索引有助於查詢。如果為空,說明沒有可用的索引
keykey
實際選擇的索引
key_len
key_length
使用的索引的長度。在不損失精確性的情況下,長度越短越好
refref
顯示索引的哪一列被使用了
rows
rows
mysql 認為必須檢查的用來返回請求資料的行數
filtered
filtered
按表條件過濾行的百分比
extra
none
附加資訊
查詢序列號 , mysql query optimizer 選定的執行計畫中查詢的序列號。表示sql執行順序.
一看數值、二看順序。id值本質是執行的分組標識,數值大的分組先被執行,id值相同表示在同一分組,執行順序從上到下。如果是子查詢,id的序號會遞增
id如果相同,可以認為是一組,從上往下順序執行;在所有組中,id值越大,優先順序越高,越先執行
怎麼做查的,怎麼做事的。
select_type value
json name
meaning
******
none
簡單的select(不使用union或子查詢)
primary
none
最外層的select
union
none
dependent union
dependent (true)
union中的第二個或隨後的select語句,依賴於外部查詢
union result
union_result
union 查詢的結果集
subquery
none
子查詢中的第乙個select查詢,不依賴於外部查詢的結果集
dependent subquery
dependent (true)
子查詢中的第乙個select,依賴於外部查詢的結果集
derived
none
用於 from 子句裡有子查詢的情況。 mysql會遞迴執行這些子查詢,把結果放在臨時表裡
materialized materialized_from_subquery 物化子查詢
uncacheable subquery cacheable (false) 結果集不能被快取的子查詢,必須重新為外層查詢的每一行進行評估
uncacheable union cacheable (false) union 中的第二個或隨後的 select 查詢,屬於不可快取的子查詢
效能:typesystem > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all
說明all
全資料表掃瞄
index
全索引表掃瞄
range
對索引列進行範圍查詢
index_merge
合併索引,使用多個單列索引搜尋
ref根據索引查詢乙個或多個值
eq_ref
搜尋時使用primary key 或 unique型別
const
常量,表最多有乙個匹配行,因為僅有一行,在這行的列值可被優化器剩餘部分認為是常數,const表很快,因為它們只讀取一次。
system
系統,表僅有一行(=系統表)。這是const聯接型別的乙個特例。
最佳,理想情況。
possible_keys
keyindex_id
index_id
where 子句中有索引, select 子句使用 *
possible_keys
keyindex_id
where 子句中沒有使用索引,select 子句有索引所以實際被使用
possible_keys
keynull
index_id
越短越好
filtered , 滿足查詢的記錄數量的比例(值越打越好)
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表好呢,還是利用索引...