Explain分析查詢語句

2021-08-02 09:08:59 字數 1904 閱讀 6775

表的讀取順序

讀取操作的型別

可用索引,實際使用的索引

表之間的引用

每張表多少行被優化器查詢

索引的長度

explain欄位解釋:

øtable:顯示這一行的資料是關於哪張表的

øpossible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇乙個合適的語句

økey:實際使用的索引。如果為null,則沒有使用索引。mysql很少會選擇優化不足的索引,此時可以在select語句中使用use index(index)來強制使用乙個索引或者用ignore index(index)來強制忽略索引

økey_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好

øref:顯示索引的哪一列被使用了,如果可能的話,是乙個常數

ørows:mysql認為必須檢索的用來返回請求資料的行數

øtype:這是最重要的字段之一,顯示查詢使用了何種型別。從最好到最差的連線型別為system、const、eq_reg、ref、range、index和all

system、const:可以將查詢的變數轉為常量. 如id=1; id為 主鍵或唯一鍵.

eq_ref:訪問索引,返回某單一行的資料.(通常在聯接時出現,查詢使用的索引為主鍵或惟一鍵)

ref:訪問索引,返回某個值的資料.(可以返回多行) 通常使用=時發生

range:這個連線型別使用索引返回乙個範圍中的行,比如使用》或《查詢東西,並且該字段上建有索引時發生的情況(注:不一定好於index)

index:以索引的順序進行全表掃瞄,優點是不用排序,缺點是還要全表掃瞄

all:全表掃瞄,應該盡量避免

øextra:關於mysql如何解析查詢的額外資訊,主要有以下幾種

using index:只用到索引,可以避免訪問表.

using where:使用到where來過慮資料. 不是所有的where clause都要顯示using where. 如以=方式訪問索引.

using tmporary:用到臨時表

using filesort:用到額外的排序. (當使用order by v1,而沒用到索引時,就會使用額外的排序)

range checked for eache record(index map:n):沒有好的索引.

顯示mysql如何使用索引來處理select語句以及連線表。

可以幫助選擇更好的索引和寫出更優化的查詢語句。

簡述:

使用 explain 或desc關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。這可以幫你分析你的 查詢語句 或是 表結構的效能 瓶頸。

通過explain命令可以得到:

1、表的讀取順序

2、表的讀取操作的操作型別

3、哪些索引可以使用

4、哪些索引被實際使用

5、表之間的引用

6、每張表有多少行被優化器查詢

為什麼要使用explain :

explain可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我們查詢,讓查詢優化器能夠更好的工作。

mysql查詢優化器是如何工作的 :

mysql查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,並且使用最嚴格的索引來消除盡可能多的資料行。

最終目標是提交select語句查詢資料行,而不是排除資料行。

優化器試圖排除資料行的原因在於它排除資料行的速度越快,那麼找到與條件匹配的資料行也就越快。

如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。

explain侷限 :

1、explain不會告訴你關於觸發器,儲存過程的資訊或者使用者自定義的函式對查詢的影響情況。

2、explain不會考慮cache。

查詢優化 | mysql慢查詢優化

explain分析查詢

使用 explain 關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的。這可以幫你分析你的查詢語句或是表結構的效能瓶頸。通過explain命令可以得到 表的讀取順序 資料讀取操作的操作型別 哪些索引可以使用 哪些索引被實際使用 表之間的引用 每張表有多少行被優化器...

EXPLAIN分析SQL語句

使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句,可以幫助選擇更好的索引和寫出更優化的查詢語句。explain 的每個輸出行包括下面的列 select查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序。有三種情況 select...

EXPLAIN分析SQL語句

explain顯示了mysql如何使用索引來處理select語句以及連線表。使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道mysql是如何處理你的sql語句的,繼而可以幫助選擇更好的索引和寫出更優化的查詢語句。explain select的sql語句 上圖顯示了explain的結...