本篇文章給大家分享的是有關(guān)MySQL查詢(xún)優(yōu)化explain命令是怎樣的,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出莎車(chē)免費(fèi)做網(wǎng)站回饋大家。
mysql查詢(xún)優(yōu)化的方法有很多種,explain是工作當(dāng)中用的比較多的一種檢查方式。explain翻譯即解釋?zhuān)褪强磎ysql語(yǔ)句的查詢(xún)解釋計(jì)劃,從解釋計(jì)劃我們能很清楚的看到解釋的語(yǔ)句有沒(méi)有合理用到索引,掃描了多少行數(shù),有沒(méi)有觸及全表掃描、用到臨時(shí)表等影響慢查詢(xún)的原因。
使用很簡(jiǎn)單,如
explainselect * from user ...
執(zhí)行后會(huì)出現(xiàn)解釋計(jì)劃的表格,意義可參考下面的參數(shù),針對(duì)這些解釋計(jì)劃,我們可以作為相對(duì)應(yīng)的優(yōu)化。
id mysql查詢(xún)標(biāo)識(shí)符,即序號(hào)。
select_type 查詢(xún)類(lèi)型
simple:即簡(jiǎn)單select 查詢(xún),不包含union及子查詢(xún);
primary:最外層的 select 查詢(xún);
union:表示此查詢(xún)是 union 的第二或隨后的查詢(xún);
dependent union:union 中的第二個(gè)或后面的查詢(xún)語(yǔ)句, 取決于外面的查詢(xún);
union result:union的結(jié)果;
subquery:子查詢(xún)中的第一個(gè)select;
dependent subquery:子查詢(xún)中的第一個(gè)select,取決于外面的查詢(xún),即子查詢(xún)依賴(lài)于外層查詢(xún)的結(jié)果。
table 所有查詢(xún)到的表。
type 聯(lián)接類(lèi)型,比較重要的項(xiàng),從這一項(xiàng)可以看出是否高效的重要依據(jù)
性能從好到壞依次如下:
system:表中只有一條數(shù)據(jù),這是一個(gè)特殊的const 類(lèi)型;
const:針對(duì)主鍵或唯一索引的等值查詢(xún)掃描,最多只返回一行數(shù)據(jù),const 查詢(xún)速度非???,因?yàn)樗鼉H僅讀取一次即可;
eq_ref:此類(lèi)型通常出現(xiàn)在多表的 join 查詢(xún),表示對(duì)于前表的每一個(gè)結(jié)果,都只能匹配到后表的一行結(jié)果,并且查詢(xún)的比較操作通常是=, 查詢(xún)效率較高;
ref:此類(lèi)型通常出現(xiàn)在多表的 join 查詢(xún), 針對(duì)于非唯一或非主鍵索引, 或者是使用了 最左前綴 規(guī)則索引的查詢(xún);
fulltext:全文索引檢索,要注意,全文索引的優(yōu)先級(jí)很高,若全文索引和普通索引同時(shí)存在時(shí),mysql不管代價(jià),優(yōu)先選擇使用全文索引;
ref_or_null:與ref方法類(lèi)似,只是增加了null值的比較。實(shí)際用的不多;
unique_subquery:用于where中的in形式子查詢(xún),子查詢(xún)返回不重復(fù)值唯一值;
index_subquery:用于in形式子查詢(xún)使用到了輔助索引或者in常數(shù)列表,子查詢(xún)可能返回重復(fù)值,可以使用索引將子查詢(xún)?nèi)ブ兀?/p>
index_merge:表示查詢(xún)使用了兩個(gè)以上的索引,最后取交集或者并集,常見(jiàn)and,or的條件使用了不同的索引,官方排序這個(gè)在ref_or_null之后,但是實(shí)際上由于要讀取所個(gè)索引,性能可能大部分時(shí)間都不如range;
range:表示使用索引范圍查詢(xún),通過(guò)索引字段范圍獲取表中部分?jǐn)?shù)據(jù)記錄。這個(gè)類(lèi)型通常出現(xiàn)在 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN操作中,此時(shí)輸出的 ref 字段為 NULL并且key_len字段是此次查詢(xún)中使用到的索引的最長(zhǎng)的那個(gè);
index:全表掃描,只是掃描表的時(shí)候按照索引次序進(jìn)行而不是行。主要優(yōu)點(diǎn)就是避免了排序,但是開(kāi)銷(xiāo)仍然非常大,這種情況時(shí), Extra 字段會(huì)顯示 Using index;
all:性能最差的情況,使用了全表掃描,系統(tǒng)必須避免出現(xiàn)這種情況。
possible_keys 可能用到的索引。
key 真正用到的索引。
key_len 使用了索引字節(jié)的長(zhǎng)度。
ref 顯示索引的哪一列被使用了。
rows 掃描了多少行數(shù),也是性能評(píng)估的重要依據(jù)。
extra 額度信息,常見(jiàn)的有以下幾種。
Distinct:一旦找到了與行相聯(lián)合匹配的行就不再搜索了;
Using filesort:使用了文件排序,性能非常慢,需要優(yōu)化。
Using index:查詢(xún)使用到了索引,列數(shù)據(jù)是從僅僅使用了索引中的信息而沒(méi)有讀取實(shí)際的行動(dòng)的表返回的,這發(fā)生在對(duì)表的全部的請(qǐng)求列都是同一個(gè)索引的部分的時(shí)候。
Using temporary:使用了臨時(shí)表排序,性能非常慢,需要優(yōu)化。
Using where:表示使用了where進(jìn)行查詢(xún),不是很重要。
ALL:這個(gè)連接類(lèi)型對(duì)于前面的每一個(gè)記錄聯(lián)合進(jìn)行完全掃描,這一般比較糟糕,需要優(yōu)化。
以上就是mysql查詢(xún)優(yōu)化explain命令是怎樣的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:mysql查詢(xún)優(yōu)化explain命令是怎樣的
網(wǎng)頁(yè)鏈接:http://aaarwkj.com/article24/igdice.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、面包屑導(dǎo)航、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)