這篇文章主要講解了“MySQL查詢語句過程和EXPLAIN語句的基本概念及其優(yōu)化”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“MySQL查詢語句過程和EXPLAIN語句的基本概念及其優(yōu)化”吧!
創(chuàng)新互聯(lián)建站專注于桂林企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都做商城網(wǎng)站。桂林網(wǎng)站建設(shè)公司,為桂林等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
網(wǎng)站或服務(wù)的性能關(guān)鍵點(diǎn)很大程度在于數(shù)據(jù)庫的設(shè)計(jì)(假設(shè)你選擇了合適的語言開發(fā)框架)以及如何查詢數(shù)據(jù)上。
我們知道MySQL的性能優(yōu)化方法,一般有建立索引、規(guī)避復(fù)雜聯(lián)合查詢、設(shè)置冗余字段、建立中間表、查詢緩存等,也知道用EXPLAIN來查看執(zhí)行計(jì)劃。
但對(duì)MySQL復(fù)雜查詢語句執(zhí)行過程和內(nèi)部機(jī)制,MySQL Optimizer本身所做優(yōu)化以及查詢語句調(diào)整對(duì)性能所產(chǎn)生的影響及其原因知之甚少。
本文試圖對(duì)其中的一些關(guān)鍵概念如執(zhí)行過程、索引使用等做比較深入的探討,知其然,知其所以然,
這樣可以避免在原本通過MySQL簡(jiǎn)單優(yōu)化就能獲得很好效果的情況下,盲目跟風(fēng)轉(zhuǎn)向NOSQL存儲(chǔ)或者投入資金升級(jí)基礎(chǔ)設(shè)施。
工欲善其事,必先利其器,這里首先介紹MySQL查詢語句性能分析工具。
MySQL的EXPLAIN命令是用來分析查詢性能的工具,EXPLAIN的輸出每一行對(duì)應(yīng)于查詢語句中的一張表的執(zhí)行計(jì)劃說明,其輸出列含義如下表:
上表中type列是表關(guān)聯(lián)類型,常見的有如下類型(按關(guān)聯(lián)查詢效率從高到低排列):
const(常量連接),比如SELECT * FROM user WHERE id=1;
eq_ref(等值引用),比如SELECT * FROM user,card WHERE user.id=card.userid;
ref(引用),用于非唯一索引,比如SELECT * FROM user,card WHERE user.last_name='test';
range(范圍),比如SELECT * FROM tbl_name WHERE key_column > 10;
index(索引),根據(jù)索引來讀取數(shù)據(jù),如果索引已包含了查詢數(shù)據(jù),只需掃描索引樹,否則執(zhí)行全表掃描和All類似;
ALL(所有),全表掃描
key列代表索引(index),rows表示估計(jì)會(huì)掃描多少行記錄,
Extra表示附加信息,常見的有如下幾種(也按查詢效率從高到低排列):
Using index:表示使用索引,如果同時(shí)出現(xiàn)Using where,代表使用索引來查找讀取記錄,如果沒有Using where,表示索引包含查詢數(shù)據(jù),無需額外的查找;
Using where:表示條件查詢,如果type列是ALL或index,而沒有出現(xiàn)該信息,則你有可能在執(zhí)行錯(cuò)誤的查詢:返回所有數(shù)據(jù);
Using filesort:不是“使用文件索引”的含義!filesort是MySQL所實(shí)現(xiàn)的一種排序策略,通常在使用到排序語句ORDER BY的時(shí)候,會(huì)出現(xiàn)該信息;
Using temporary:表示為了得到結(jié)果,使用了臨時(shí)表,這通常是出現(xiàn)在多表聯(lián)合查詢,結(jié)果排序的場(chǎng)合;
如果EXPLAIN出現(xiàn)后面兩個(gè)信息(Using filesort,Using temporary),而rows又比較大,通常意味著你需要調(diào)整查詢語句,或者需要添加索引,總之需要盡量消除這兩個(gè)信息。
下面給出EXPLAIN結(jié)果實(shí)例(從用戶檔案表中找出昵稱和性別,按用戶表中的用戶關(guān)注者數(shù)量排序):
感謝各位的閱讀,以上就是“MySQL查詢語句過程和EXPLAIN語句的基本概念及其優(yōu)化”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)MySQL查詢語句過程和EXPLAIN語句的基本概念及其優(yōu)化這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
本文題目:MySQL查詢語句過程和EXPLAIN語句的基本概念及其優(yōu)化
新聞來源:http://aaarwkj.com/article12/iijsgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、軟件開發(fā)、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、企業(yè)建站、定制開發(fā)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)