近日一直在研究如何才能寫出高小的分頁演算法,大概整理了一下,思路如下:
首先資料庫裡需要有乙個自動編號字段(id)。然後第一次訪問的時候,取出所有記錄,定製好每頁的記錄數pagesize,計算出頁數,然後根據頁數建立乙個一維陣列pageid(pagecount),pageid(0)儲存記錄初試條件,然後對應每個元素儲存每頁對應的id邊界碼
(1,id邊界碼:如果資料庫記錄id記錄序列如下 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
假設需要按照id 順序排序的話 ,pagesize = 5, pagecount = 4 ,pageid(4)
陣列pageid的值分別為pageid(0) = 1, pageid(1) = 5 ,pageid(2) = 10,pageid(3) = 15 ,pageid(4) = 16
當訪問第 i 頁的時候就直接找 [pageid(i-1) , pageid(i) ) 之間的記錄,這樣可以保證每次取的記錄都只是pagesize 條記錄。
假設需要按照id倒序排列的話,
陣列pageid的值分別為pageid(0) = 16 , pageid(1) = 12 , pageid(2) = 7 ,pageid(3) = 2, pageid(4) = 1, 當訪問第 i 頁的時候就直接查詢id屬於[ pageid(i-1) , pageid(i) )
研究心得:(首先謝謝葉子(dvbbs)的心得)盡量不要用自帶的分頁程式,rs.recordcount 很耗資源。依次,估計rs.pagecount ……也耗資源,而且用rs.getrows()效果也很明顯提高。
經過比較,葉子的演算法在記錄比較靠前的時候速度以及效率是比較高的。但是不太穩定,有時(很少)會從30毫秒左右跳到1-200毫秒。到了後面效率就明顯下降到50-80毫秒,越後效率越低。新演算法第一次效率比較低下,大約在500毫秒左右,但是比較穩定,後面一般哦度是50毫秒左右,而且隨著庫的記錄數變化,這個速度依然如此。不會有什麼變化。下次就把葉子和我的演算法結合起來試試,不過葉子的演算法確實是很不錯d,具備通用性。我這個只能拿來聊聊了。
MySQL如何優化分頁查詢
mysql如何優化分頁查詢一般分頁查詢是建立覆蓋索引能夠比較好的提公升效能。第一種優化思路 在索引上完成分頁操作,最後根據主鍵關聯回原表查詢所需要的其他列內容 未優化之前的sql,這個相當於是全表掃瞄 select film id,description from film order by tit...
在ASP中優化資料庫處理
asp是乙個web伺服器端的開發環境,它提供了一種簡單易學的指令碼 vbscript或jscript 並帶有許多內建的物件,從而提供了一條簡捷的程式設計之路。更為重要的是,asp中提供了ado物件,讓程式設計師可以輕鬆操作各種 資料庫,從而可以產生和執行動態的 互動的web服務應用程式。目前,國內很...
MySQL分頁在大資料量下如何優化?
mysql在進行分頁的時候通常會使用到 limit m,n 在資料量小的時候效能還過得去,但是在資料量非常大的的時候,耗時會非常大,那麼如何進行優化了?原理就是通過索引進行優化。我們通過下文來慢慢理解吧!測試實驗 1.直接用limit start,count分頁語句,也是我程式中用的方法 selec...