這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)MySQL中怎么實現(xiàn)排序,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
十載的菏澤網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整菏澤建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“菏澤網(wǎng)站設(shè)計”,“菏澤網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
在我們執(zhí)行Mysql的Explain語句的時候,經(jīng)常會看到這樣的一個Using filesort。那么,Mysql的排序是在內(nèi)存里面進行的,還是在磁盤里面進行的呢?假如我們是Mysql的設(shè)計者,我們會怎么做呢?首先,在內(nèi)存里面來進行排序的速度,肯定是遠遠大于在磁盤中的。但是內(nèi)存的資源畢竟有限,假如我們掃描到足夠多的行,這個時候可能數(shù)據(jù)的大小已經(jīng)超過內(nèi)存,想在內(nèi)存中進行排序是很困難的,這個時候我們只能夠使用磁盤來進行排序了。
沒錯,Mysql也是這么設(shè)計的,Mysql有一個配置項,sort_buffer_size,如果我們Select到的數(shù)據(jù)量小于這個數(shù),那么就會將數(shù)據(jù)在內(nèi)存中進行排序,否則,Mysql就會把數(shù)據(jù)拆成很多個臨時文件,每個臨時文件的大小都會小于sort_buffer_size。也就是說,如果sort_buffer_size越小,拆分的臨時文件就會越多,這也是為什么我們選來當存儲的機器內(nèi)存也要盡量大的原因。Mysql排序了多個臨時文件之后,最后在做一次歸并排序,就可以將所有記錄排完了。
相信大家下面這樣的話,如果你的數(shù)據(jù)庫的列數(shù)比較多,那么盡量地不要使用Select * 而是需要什么字段就只取什么字段,在數(shù)據(jù)庫的排序中尤為如此。假如我們的數(shù)據(jù)列數(shù)特別多,滿足條件的行數(shù)也多,這個時候,Mysql就不得不用更極端的排序算法進行排序,每一行數(shù)據(jù),都只取主鍵id跟排序的字段。然后進行排序,最后,再取要滿足條件的結(jié)果回表查詢其他字段,然后返回結(jié)果。相對于原有上面的方案,這種Rowid的排序方式多了一次回表,所以查詢效率大打折扣。
那么,我們有什么辦法可以進行排序的優(yōu)化呢?我們都知道,Innodb的索引實際上是一顆多叉排序樹,那么假如我們能夠在已有的排序樹上取得結(jié)果,豈不美哉?!所以,如果我們要查詢已經(jīng)要排序的字段全都在已有的索引上,并且滿足最左前綴原則,那么,我們就可以減少一次回表,從而大大提升效率。那么,如果判斷你的Sql語句滿足了這種優(yōu)化呢?如果你的語句中含有OrderBy,但是Explain的結(jié)果卻只有UseIndex,說明命中了索引覆蓋。
上述就是小編為大家分享的MySQL中怎么實現(xiàn)排序了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:MySQL中怎么實現(xiàn)排序
URL鏈接:http://chinadenli.net/article20/gphcjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站設(shè)計、響應(yīng)式網(wǎng)站、手機網(wǎng)站建設(shè)、網(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)