MySQL執行計畫分析

2021-09-08 20:28:41 字數 2067 閱讀 1917

原文:

mysql執行計畫分析

sql執行計畫的輸出可能為多行,每一行代表對乙個資料庫物件的操作

可以看到上面的執行計畫返回了3行結果,id列的值可以看作是sql中所具有的select操作的序號

由於上述sql中只有乙個select,所以id全為1,因此,我們就要按照由上至下讀取執行計畫

按照我們的sql語句,我們會認為執行順序是a,b,c,但是通過上圖可以發現,mysql並不是完成按照sql中所寫的順序來進行表的關聯操作的

執行對錶的執行順序為a,c,b,這是由於mysql優化器會根據表中的索引的統計資訊來調整表關聯的實際順序值含義

******

不包含子查詢或是union操作的查詢

primary

查詢中如果包含任何子查詢,那麼最外層的查詢則被標記為primary

subquery

select 列表中的子查詢

dependent subquery

依賴外部結果的子查詢

union

union操作的第二個或是之後的查詢的值為union

dependent union

當union作為子查詢時,第二或是第二個後的查詢的select_type值

union result

union產生的結果集

derived

出現在from子句中的子查詢

包含以下幾種結果:

輸出去資料行所在表的名稱,如果表取了別名,則顯示的是別名

: 由id為m,n查詢union產生的結果集

/:由id為n的查詢產生的結果

查詢匹配的記錄來自哪乙個分割槽

對於分割槽表,顯示查詢的分割槽id

對於非分割槽表,顯示為null

按效能從高至低排列如下:值含義

system

這是const聯接型別的乙個特例,當查詢的表只有一行時使用

const

表中有且只有乙個匹配的行時使用,如對主鍵或是唯一索引的查詢,這是效率最高的聯接方式

eq_ref

唯一索引或主鍵索引查詢,對應每個索引鍵,表中只有一條記錄與之匹配

ref非唯一索引查詢,返回匹配某個單獨值的所有行

ref_or_null

類似於ref型別的查詢,但是附加了對null值列的查詢

index_merge

該聯接型別表示使用了索引合併優化方法

range

索引範圍掃瞄,常見於between、>、《這樣的查詢條件

index

full index scan 全索引掃瞄,同all的區別是,遍歷的是索引樹

allfull table scan 全表掃瞄,這是效率最差的聯接方式

包含mysql如何執行查詢的附加資訊值含義

distinct

優化distinct操作,在找到第乙個匹配的元素後即停止查詢

not exists

使用not exists來優化查詢

using filesort

使用額外操作進行排序,通常會出現在order by或group by查詢中

using index

使用了覆蓋索引進行查詢

using temporary

mysql需要使用臨時表來處理查詢,常見於排序,子查詢,和分組查詢

using where

需要在mysql伺服器層使用where條件來過濾資料

select tables optimized away

直接通過索引來獲得資料,不用訪問表,這種情況通常效率是最高的

顯示mysql索引所使用的位元組數,在聯合索引中如果有3列,假如3列欄位總長度為100個位元組,key_len顯示的可能會小於100位元組,比如30位元組,這就說明在查詢過程中沒有使用到聯合索引的所有列,只是利用到了前面的一列或2列

mysql執行計畫分析

執行計畫是sql在資料庫中執行時的表現情況,通常用於sql效能分析,優化等場景。在mysql中使用 explain 關鍵字來檢視。如下所示 explain select from table where table.id 1執行上面的sql語句後你會看到,下面的表頭資訊 table type pos...

MySQL SQL執行計畫分析

當我們的系統上線後資料庫的記錄不斷增加,之前寫的一些sql語句或者一些orm操作效率變得非常低。我們不得不考慮sql優化,sql優化大概是這樣乙個流程 1.定位執行效率低的sql語句 定位 2.分析為什麼這段sql執行的效率比較低 分析 3.最後根據第二步分析的結構採取優化措施 解決 而explai...

explain執行計畫分析

1.explain通過分析執行計畫的結果來分析查詢語句或表結構的效能瓶頸。1 表讀取的順序 2 資料讀取操作的操作型別 3 可以使用索引 4 實際使用索引 5 表與表之間的引用資訊 6 有多少行被查詢 2.執行計畫結果字段含義 1 id 該欄位表示執行select子句或操作表的順序,分為三種情況 i...