Mysql分析-explain的詳細介紹

為什么要了解explain:

想了解select查詢的內部情況,查詢優化器是如何工作的,是否使用到了索引,explain可以做到。

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

MySQL查詢優化器有幾個目標,但是其中最主要的目標是盡可能地使用索引,并且使用最嚴格的索引來消除盡可能多的數據行。最終目標是提交SELECT語句查找數據行,而不是排除數據行。優化器試圖排除數據行的原因在于它排除數據行的速度越快,那么找到與條件匹配的數據行也就越快。如果能夠首先進行最嚴格的測試,查詢就可以執行地更快。

一.explain共有十個屬性參數Mysql分析-explain的詳細介紹

二.EXPLAIN列的解釋:

1.id:選定的執行計劃中查詢的序列號。表示查詢中執行select子句或操作表的順序,id值越大優先級越高,越先被執行。id相同,執行順序由上至下。

2.select_type查詢類型,說明:

Mysql分析-explain的詳細介紹

3.table:顯示這一行的數據是關于哪張表的

4.type:這是重要的列,顯示連接使用了何種類型。

從最好到最差的連接類型為const、eq_reg、ref、range、index和ALL

Mysql分析-explain的詳細介紹

5.possible_keys顯示可能應用在這張表中的索引。如果為空,沒有可能的索引??梢詾橄嚓P的域從WHERE語句中選擇一個合適的語句

6.key?實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MYSQL會選擇優化不足的索引。這種情況下,可以在SELECT語句中使用USEINDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MYSQL忽略索引

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

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

9.rows:MYSQL認為必須檢查的用來返回請求數據的行數

10.Extra:關于MYSQL如何解析查詢的額外信息這里可以看到的壞的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,結果是檢索會很慢,應該避免。

Mysql分析-explain的詳細介紹

很顯然,當type是ALL,即最壞的情況。Extra里還出現了Using filesort,也是最壞的情況,優化是必須的。?

索引不是添加的越多越好的,在不同數量級的表中,是有取舍的,本身維護索引可能也會成為一種負擔,要會合理的添加索引。

用explain看看,你的語句該優化了嗎?

?以上就是Mysql分析-explain的詳細介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享