mysql查詢優(yōu)化explain命令是怎樣的

本篇文章給大家分享的是有關(guān)MySQL查詢優(yōu)化explain命令是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出莎車免費做網(wǎng)站回饋大家。

mysql查詢優(yōu)化的方法有很多種,explain是工作當中用的比較多的一種檢查方式。explain翻譯即解釋,就是看mysql語句的查詢解釋計劃,從解釋計劃我們能很清楚的看到解釋的語句有沒有合理用到索引,掃描了多少行數(shù),有沒有觸及全表掃描、用到臨時表等影響慢查詢的原因。

使用很簡單,如

explainselect * from user ...

執(zhí)行后會出現(xiàn)解釋計劃的表格,意義可參考下面的參數(shù),針對這些解釋計劃,我們可以作為相對應的優(yōu)化。

mysql查詢優(yōu)化explain命令是怎樣的

id    mysql查詢標識符,即序號。

select_type    查詢類型

  • simple:即簡單select 查詢,不包含union及子查詢;

  • primary:最外層的 select 查詢;

  • union:表示此查詢是 union 的第二或隨后的查詢;

  • dependent union:union 中的第二個或后面的查詢語句, 取決于外面的查詢;

  • union result:union的結(jié)果;

  • subquery:子查詢中的第一個select;

  • dependent subquery:子查詢中的第一個select,取決于外面的查詢,即子查詢依賴于外層查詢的結(jié)果。

table    所有查詢到的表。

type    聯(lián)接類型,比較重要的項,從這一項可以看出是否高效的重要依據(jù)

性能從好到壞依次如下:

  • system:表中只有一條數(shù)據(jù),這是一個特殊的const 類型;

  • const:針對主鍵或唯一索引的等值查詢掃描,最多只返回一行數(shù)據(jù),const 查詢速度非??欤驗樗鼉H僅讀取一次即可;

  • eq_ref:此類型通常出現(xiàn)在多表的 join 查詢,表示對于前表的每一個結(jié)果,都只能匹配到后表的一行結(jié)果,并且查詢的比較操作通常是=, 查詢效率較高;

  • ref:此類型通常出現(xiàn)在多表的 join 查詢, 針對于非唯一或非主鍵索引, 或者是使用了 最左前綴 規(guī)則索引的查詢;

  • fulltext:全文索引檢索,要注意,全文索引的優(yōu)先級很高,若全文索引和普通索引同時存在時,mysql不管代價,優(yōu)先選擇使用全文索引;

  • ref_or_null:與ref方法類似,只是增加了null值的比較。實際用的不多;

  • unique_subquery:用于where中的in形式子查詢,子查詢返回不重復值唯一值;

  • index_subquery:用于in形式子查詢使用到了輔助索引或者in常數(shù)列表,子查詢可能返回重復值,可以使用索引將子查詢?nèi)ブ兀?/p>

  • index_merge:表示查詢使用了兩個以上的索引,最后取交集或者并集,常見and,or的條件使用了不同的索引,官方排序這個在ref_or_null之后,但是實際上由于要讀取所個索引,性能可能大部分時間都不如range;

  • range:表示使用索引范圍查詢,通過索引字段范圍獲取表中部分數(shù)據(jù)記錄。這個類型通常出現(xiàn)在 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN操作中,此時輸出的 ref 字段為 NULL并且key_len字段是此次查詢中使用到的索引的最長的那個;

  • index:全表掃描,只是掃描表的時候按照索引次序進行而不是行。主要優(yōu)點就是避免了排序,但是開銷仍然非常大,這種情況時, Extra 字段會顯示 Using index;

  • all:性能最差的情況,使用了全表掃描,系統(tǒng)必須避免出現(xiàn)這種情況。

possible_keys    可能用到的索引。

key    真正用到的索引。

key_len    使用了索引字節(jié)的長度。

ref 顯示索引的哪一列被使用了。

rows    掃描了多少行數(shù),也是性能評估的重要依據(jù)。

extra 額度信息,常見的有以下幾種。  

  • Distinct:一旦找到了與行相聯(lián)合匹配的行就不再搜索了;

  • Using filesort:使用了文件排序,性能非常慢,需要優(yōu)化。

  • Using index:查詢使用到了索引,列數(shù)據(jù)是從僅僅使用了索引中的信息而沒有讀取實際的行動的表返回的,這發(fā)生在對表的全部的請求列都是同一個索引的部分的時候。

  • Using temporary:使用了臨時表排序,性能非常慢,需要優(yōu)化。

  • Using where:表示使用了where進行查詢,不是很重要。

  • ALL:這個連接類型對于前面的每一個記錄聯(lián)合進行完全掃描,這一般比較糟糕,需要優(yōu)化。

以上就是mysql查詢優(yōu)化explain命令是怎樣的,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享文章:mysql查詢優(yōu)化explain命令是怎樣的
網(wǎng)頁鏈接:http://bm7419.com/article24/igdice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、面包屑導航、企業(yè)網(wǎng)站制作品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司