如何高效率讀取資料庫並分頁顯示(利用limit)

2021-06-18 13:18:02 字數 836 閱讀 1935

這幾天在做乙個專案,其中涉及到了文章檢視的功能,顯然就會涉及到分頁內容了。下面就講下我在這裡面用的到技巧和遇到的問題。

首先需要了解實現分頁要獲取哪些資料。總記錄數totalcount,當前頁數currentpage,每頁顯示數pagesize。

首先我從資料庫中讀取資料時,我是僅讀取我要顯示的條數,我利用了limit(limit用法可以上網搜尋資料),然後記錄當前頁currentpage,當下一次訪問時,我會根據當前頁計算出這次應該從哪讀取,於是totalcount-currentpage*pagesize,計算出當前應該從**開始讀取,在計算總頁的時候使用(totalsize + pagesize - 1) / pagesize,這樣就能夠很簡單的實現分頁了。(但是我在資料中是從後往前讀取的,這樣先提取後面的資料)

分頁實現了,但是問題又來了,一般都是最新的文章應該在最前面顯示,但是上面的做法卻是最新的在最後面,那怎麼辦呢?當時我想的是用limit和order by組合使用,但是總是出錯,後來查資料才發現是因為溢位的問題。如果先使用order by,再limit,顯然這樣做法每次都得對整張表進行操作,那麼如果先limit,再order  by呢,乍一看似乎可以,但是實踐發現不行,溢位了。我起先想用的是檢視來解決。limit提取出來放在檢視中,然後order by。但是這樣操作明顯很麻煩,後來我用的方法是,不改變讀取的結果,我在遍歷集合的時候進行來操作他。所以我在操作集合的時候,利用了resultset中的last()和isbeforefirst()這兩個函式,從集合後往前遍歷就ok了。(因為資料在資料庫中儲存是時間順序的,結果集取出來肯定是按照時間排序的,我往前遍歷結果正好是我要的)。

可能說得不是很清楚,但是我最後確實實現了,也知道了怎麼進行高效率的讀取資料庫進行分頁。

各資料庫高效率分頁

db2 1.建立索引 create index 索引名 on 表名 排序用的列名 asc 2.更新統計資訊 runstats on table 模式名.表名 with distribution and on all columns and detailed index 模式名.索引 3.優化sql ...

SQLServer大量資料高效率分頁

以下為從大資料量表檢索分頁資料的有效方法 測試時,先從largetable表選出1000條記錄分頁呈現 time segment為資料表字段 declare pagesize int 每頁大小 declare currentpage int 當前頁 set pagesize 2 set curren...

mysql 高效率分頁 mysql如何實現高效分頁

2015 11 20 06 30 06 閱讀 396 先看一下分頁的基本原理 我拿的是csdn那個百萬級資料庫來測試!select from csdn order by id desc limit 100000,2000 耗時 0.813ms 分析 對上面的mysql語句說明 limit 10000...