首頁 >資料庫 >mysql教程 >Mysql分析-explain的詳細介紹

Mysql分析-explain的詳細介紹

黄舟
黄舟原創
2017-03-02 16:24:012476瀏覽

為什麼要了解explain:

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

MySQL查詢最佳化器是如何運作的 :

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

一.explain共有十個屬性參數


二.EXPLAIN列的解釋:

1.id: 選定的執行計劃中查詢的序號。表示查詢中執行select子句或運算表的順序,id值越大優先權越高,越先執行。 id相同,執行順序從上到下。

2.select_type#:查詢類型,說明:


#3.table:顯示這一行的資料是關於哪張表格的

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

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


5.possible_keys#:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從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根本不能使用索引,結果是檢索會很慢,應該避免。

########################很顯然,當type是ALL,也就是最壞的情況。 Extra裡還出現了Using filesort,也是最壞的情況,優化是必須的。 ######索引不是增加的越多越好的,在不同數量級的表中,是有取捨的,本身維護索引可能也會成為一種負擔,要會合理的添加索引。 ############用explain看看,你的語句該優化了嗎? ###

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



#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn