MySQL中orderby的實(shí)現(xiàn)原理是什么

本篇內(nèi)容主要講解“MySQL中order by的實(shí)現(xiàn)原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“MySQL中order by的實(shí)現(xiàn)原理是什么”吧!

創(chuàng)新互聯(lián)是一家專業(yè)提供汕頭企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5場景定制、小程序制作等業(yè)務(wù)。10年已為汕頭眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

全字段排序

MySQL會(huì)給每個(gè)線程分配一塊內(nèi)存用于排序,稱為sort_buffer。

語句的執(zhí)行流程:

(1)初始化sort_buffer,確定放入select的字段

(2)找到滿足條件的行取出select的字段存入sort_buffer中

(3)一直查找到不滿足條件的為止

(4)對(duì)sort_buffer中的數(shù)據(jù)按照排序的字段做排序

sort_buffer_size可以設(shè)置sort_buffer的大小。如果要排序的數(shù)據(jù)量小于 sort_buffer_size,排序就在內(nèi)存中完成。但如果排序數(shù)據(jù)量太大,內(nèi)存放不下,則不得不利用磁盤臨時(shí)文件輔助排序。

rowid排序

max_length_for_sort_data,是 MySQL 中專門控制用于排序的行數(shù)據(jù)的長度的一個(gè)參數(shù)。它的意思是,如果單行的長度超過這個(gè)值,MySQL 就認(rèn)為單行太大,要換一個(gè)算法。

語句執(zhí)行流程:

(1)初始化sort_buffer,確定放入id和要排序的字段

(2)找到滿足條件的行取出這兩個(gè)字段存入sort_buffer中

(3)一直查找到不滿足條件的為止

(4)對(duì)sort_buffer中的數(shù)據(jù)按照排序的字段做排序

(5)遍歷排序結(jié)果,并按照id的值回表取出select的字段

如果MySQL認(rèn)為內(nèi)存足夠大就會(huì)使用全字段排序,否則會(huì)使用rowid排序。對(duì)于 InnoDB 表來說,rowid 排序會(huì)要求回表多造成磁盤大量隨機(jī)讀,因此不會(huì)被優(yōu)先選擇。

到此,相信大家對(duì)“MySQL中order by的實(shí)現(xiàn)原理是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前文章:MySQL中orderby的實(shí)現(xiàn)原理是什么
網(wǎng)站URL:http://muchs.cn/article38/pdjjsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、、品牌網(wǎng)站建設(shè)、App開發(fā)、動(dòng)態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站

廣告

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

成都做網(wǎng)站