您好,登錄后才能下訂單哦!
這篇文章主要介紹MySQL實(shí)現(xiàn)分頁查詢的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
MySQL中實(shí)現(xiàn)分頁查詢:在數(shù)據(jù)量較小的情況下可使用limit查詢來實(shí)現(xiàn)分頁查詢,在數(shù)據(jù)量大的情況下使用建立主鍵或唯一索引來實(shí)現(xiàn),另外可通過order by對(duì)其排序
在后端項(xiàng)目中總是避免不了admin管理,當(dāng)后臺(tái)管理需要展示數(shù)據(jù)時(shí)就會(huì)需要用到分頁。
一般情況下在MySQL中進(jìn)行分頁查詢時(shí),會(huì)用到limit查詢,而且在查詢中都會(huì)使用到order by來進(jìn)行排序。接下來將具體介紹MySQL是如何實(shí)現(xiàn)分頁查詢的
分頁需求:
客戶端通過傳遞start(頁碼),limit(每頁顯示的條數(shù))兩個(gè)參數(shù)去分頁查詢數(shù)據(jù)庫表中的數(shù)據(jù),MySql數(shù)據(jù)庫提供分頁的函數(shù)有l(wèi)imit m,n,但是該函數(shù)的用法和我們的需求不一樣,所以就需要根據(jù)實(shí)際情況去改寫適合自己的分頁語句。例
查詢第1條到第10條的數(shù)據(jù)的sql是:
select * from table limit 0,10;
對(duì)應(yīng)我們的需求就是查詢第一頁的數(shù)據(jù):
select * from table limit (1-1)*10,10;
從上面的分析我們可以得出分頁sql的格式是:
select * from table limit (start-1)*limit,limit;
其中start是頁碼,limit是每頁顯示的條數(shù)。
建立主鍵或者唯一索引
在數(shù)據(jù)量較小的時(shí)候使用 limit 進(jìn)行數(shù)據(jù)分頁在性能上面不會(huì)有明顯的緩慢,但是當(dāng)數(shù)據(jù)量達(dá)到了萬級(jí)或百萬級(jí)時(shí),sql語句的性能將會(huì)影響數(shù)據(jù)的返回。這是就要使用主鍵或者是唯一索引來代替limit進(jìn)行數(shù)據(jù)分頁
例:返回10到50之間的數(shù)據(jù)
設(shè)主鍵或唯一索引為demo_id
select * from table where demo_id > (pageNo-1)*pageSize limit pageSize;
基于數(shù)據(jù)再排序
當(dāng)需要返回的信息要按順序或者逆序時(shí),就需要對(duì)上面的數(shù)據(jù)進(jìn)行排序??捎胦rder by ASC表示順序,order byDESC表示逆序,一般情況下默認(rèn)的為順序
例:返回的數(shù)據(jù)依照demo_id的順序進(jìn)行排列
select * from table where demo_id > (pageNo-1)*pageSize order by demo_id limit pageSize;
以上是MySQL實(shí)現(xiàn)分頁查詢的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。