共計(jì) 1660 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這篇文章主要介紹了 MySQL 如何使用 limit 方式實(shí)現(xiàn)分頁,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
一、limit 基本實(shí)現(xiàn)方式
一般情況下,客戶端通過傳遞 pageNo(頁碼)、pageSize(每頁條數(shù))兩個(gè)參數(shù)去分頁查詢數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)量較小(元組百 / 千級(jí))時(shí)使用 MySQL 自帶的 limit 來解決這個(gè)問題:
收到客戶端 {pageNo:1,pagesize:10}
select * from table limit (pageNo-1) * pageSize, pageSize;
收到客戶端 {pageNo:5,pageSize:30}
select * from table limit (pageNo-1) * pageSize,pageSize;
二、建立主鍵或者唯一索引
在數(shù)據(jù)量較小的時(shí)候簡(jiǎn)單的使用 limit 進(jìn)行數(shù)據(jù)分頁在性能上面不會(huì)有明顯的緩慢,但是數(shù)據(jù)量達(dá)到了 萬級(jí)到百萬級(jí) sql 語句的性能將會(huì)影響數(shù)據(jù)的返回。這時(shí)需要利用主鍵或者唯一索引進(jìn)行數(shù)據(jù)分頁;
假設(shè)主鍵或者唯一索引為 good_id
收到客戶端 {pageNo:5,pagesize:10}
select * from table where good_id (pageNo-1) * pageSize limit pageSize;
–返回 good_id 為 40 到 50 之間的數(shù)據(jù)
三、基于數(shù)據(jù)再排序
當(dāng)需要返回的信息為順序或者倒序時(shí),對(duì)上面的語句基于數(shù)據(jù)再排序。order by ASC/DESC 順序或倒序 默認(rèn)為順序
select * from table where good_id (pageNo-1)*pageSize order by good_id limit pageSize;
–返回 good_id 為 40 到 50 之間的數(shù)據(jù), 數(shù)據(jù)依據(jù) good_id 順序排列
四、分頁最佳方案
每頁顯示 10 條:當(dāng)前 118 120, 125
大 小
980 970 7 6 6 5 54 43 32
21 19 98
select
*
from
tb1
where
nid (select nid from (select nid from tb1 where nid 當(dāng)前頁最小值 order by nid desc limit 每頁數(shù)據(jù) *【頁碼 - 當(dāng)前頁】) A order by A.nid asc limit 1)
order by
nid desc
limit 10;
where
nid (select nid from (select nid from tb1 where nid 970 order by nid desc limit 40) A order by A.nid asc limit 1)
order by
nid desc
limit 10;
where
nid (select nid from (select nid from tb1 where nid 當(dāng)前頁最大值 order by nid asc limit 每頁數(shù)據(jù) *【當(dāng)前頁 - 頁碼】) A order by A.nid asc limit 1)
order by
nid desc
limit 10;
where
nid (select nid from (select nid from tb1 where nid 980 order by nid asc limit 20) A order by A.nid desc limit 1)
order by
nid desc
limit 10;
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySQL 如何使用 limit 方式實(shí)現(xiàn)分頁”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
向 AI 問一下細(xì)節(jié)