用Explain分析Mysql的執行計畫

2021-09-23 17:04:27 字數 1342 閱讀 5437

mysql中對於每條執行語句都有乙個執行計畫,我們用explain+sql語句,就可以查詢mysql對該條語句是怎麼執行的,查了多少行,是否用到索引等,以此來幫助我們分析sql語句的效能,改善sql語句的編寫。如下圖:

此片文章來記錄一下如何看這一堆東西,每個欄位是啥意思。

const:

用主鍵的等值查詢,

唯一二級索引的等值查詢(不為null的情況)

注:主鍵等值是非常快的,直接在聚簇索引中定位,唯一二級索引需要回表一次,也是極快的,但是由於唯一索引不限制null的數量,當索引值為null的情況,會回表多次,所以如果是null值不是const的方式 ,至少是ref方式

ref:

普通二級索引等值查詢

注:查詢方式就是二級索引找完,找到主鍵,回表到聚簇索引再查的方式

ref_or_null:有時候我們不僅想找出某個二級索引列的值等於某個常數的記錄,還想把該列的值為null的記錄也找出來

range:索引範圍查詢

index:查詢的值都在二級索引中,直接遍歷二級索引的方式

all:不用索引的全表掃瞄

4.filtered:

如果使用的是索引執行的單錶掃瞄,那麼計算驅動表扇出的時候需要估計出滿足除使用到對應索引的搜尋條件外的其他搜尋條件的記錄有多少條。

如果使用的是全表掃瞄的方式執行的單錶查詢,那麼計算驅動表扇出時需要估計出滿足搜尋條件的記錄到底有多少條

5.extra

extra列是用來說明一些額外資訊的,我們可以通過這些額外資訊來更準確的理解mysql到底將如何執行給定的查詢語句

using index :當我們的查詢列表以及搜尋條件中只包含屬於某個索引的列,也就是在可以使用索引覆蓋的情況下,在extra列將會提示該額外資訊。即使用index方式搜尋單錶的時候

using where:當我們使用全表掃瞄來執行對某個表的查詢,並且該語句的where子句中有針對該錶的搜尋條件時,在extra列中會提示上述額外資訊

Mysql效能分析 Explain

一.explain是什麼 使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是 如何處理你的sql語句的。分析你的查詢語句或是表結構的效能瓶頸 二.explain作用 1 表的讀取順序 2 哪些索引可以使用 3 資料讀取操作的操作型別 4 哪些索引被實際使用 5 表之間的引...

MySQL效能分析及explain

mysql效能分析及explain用法的知識 1.使用explain語句去檢視分析結果 如explain select from test1 where id 1 會出現 id selecttype table type possible keys key key len ref rows extr...

MySQL效能分析及explain

mysql效能分析及explain用法的知識是本文我們主要要介紹的內容,接下來就讓我們通過一些實際的例子來介紹這一過程,希望能夠對您有所幫助。1.使用explain語句去檢視分析結果 如explain select from test1 where id 1 會出現 id selecttype ta...