Mysql 執行計畫

2021-09-28 11:13:19 字數 3322 閱讀 9759

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 查詢,屬於不可快取的子查詢

效能:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

type

說明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表好呢,還是利用索引...