2.1 排序方式
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、青州ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的青州網(wǎng)站制作公司
數(shù)據(jù)量小則在內(nèi)存排序, 數(shù)據(jù)量大則使用磁盤排序
內(nèi)存排序 : 直接使用"快速排序"
磁盤排序 : 先將數(shù)據(jù)分塊, 對每個獨立的塊使用"快速排序", 并將各個塊的排序結(jié)果存在磁盤上, 然后將各個排好序的塊進行合并(merge), 最后返回排序結(jié)果
2.2 排序算法
3. 注意點 :
第一種:MySQL 隨機排序常規(guī)寫法:展開目錄
SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100;
執(zhí)行耗時 1.18s
SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100;
執(zhí)行耗時 1.25s
這樣的耗時不能接受。
第二種:stackoverflow 上找了一個黑科技寫法:展開目錄
SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBY37*(UNIX_TIMESTAMP() ^id) 0xffffLIMIT100;
執(zhí)行耗時 150ms
SELECT*FROMusersWHEREtotalScoreBETWEEN5AND100ORDERBY37*(UNIX_TIMESTAMP() ^id) 0xffffLIMIT100;
執(zhí)行耗時 153ms
執(zhí)行耗時直接縮短至 150ms,已經(jīng)比上一個寫法快很多了,而且 LIMIT 1000 時耗時也是 150ms 左右。
第三種方式:展開目錄
SELECT*
FROMusersASu
INNERJOIN(SELECTidFROMusersWHEREtotalScoreBETWEEN5AND100ORDERBYRAND()LIMIT100)AStONt.id=u.id
WHERE1
執(zhí)行耗時 110ms
LIMIT 1000 時耗時也穩(wěn)定在 110ms 左右。
耗時最少,推薦使用第三種。
前面小節(jié)介紹了如何查詢數(shù)據(jù),并且介紹了如何使用 WHERE 條件對查詢的數(shù)據(jù)結(jié)果集進行篩選,本小節(jié)介紹如何使用 ORDER BY 對查詢結(jié)果集進行排序,排序在實際業(yè)務(wù)中非常有必要,可以較好地對結(jié)果集數(shù)據(jù)分析和處理。
ASC 是對結(jié)果集按照字段從小到大排序(升序),以 teacher 表為例,將查詢出來的所有結(jié)果集按照年齡 age 從小到大排序:
執(zhí)行結(jié)果如下圖:
DESC 是對結(jié)果集按照字段從大到小排序(降序),以 teacher 表為例,將查詢出來的所有結(jié)果集按照年齡 id 從大到小排序:
執(zhí)行結(jié)果如下圖:
以 teacher 表為例,將查詢出來的結(jié)果集按照 age 從大到小排序之后,再按照 id 字段從小到大排序:
執(zhí)行結(jié)果如下圖:
前面排序的 age 和 id 字段是 int 類型,為了演示方便這里先插入幾個 name 字段為英文名的教師測試數(shù)據(jù),并對 name 字段排序,插入數(shù)據(jù) SQL 語句如下:
對查詢結(jié)果集按照 name 字段 ASC 升序排序:
執(zhí)行結(jié)果如下圖:
本小節(jié)介紹了如何使用 ORDER BY 對查詢結(jié)果集按照值字段排序,其中包括 ASC 升序和 DESC 降序,需要注意的是各種數(shù)據(jù)的字符集可能不同,如中文字符編碼 GBK編碼、utf-8編碼, 若需要經(jīng)常對字符串類型字段進行排序,可以給該字符串字段加上普通 Bree索引,二級索引樹字符串默認存儲方式是按照字符集升序存儲的(MySQL8.0 可自定義排序存儲方式),所以有索引的字段排序性能比沒有索引的字段排序性能好。
MySQL的排序,使用order by來實現(xiàn)。
order by id asc,表示用id升序排列
order by id desc,表示用id降序排列
當需要用多個字段排序時,order by cdate desc,id asc,表示先用cdate降序排列,cdate相同的再用id升序排列
網(wǎng)頁名稱:mysql排序怎么用 MySQL的排序
當前URL:http://vcdvsql.cn/article34/hehose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、商城網(wǎng)站、全網(wǎng)營銷推廣、軟件開發(fā)、網(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)