查看ADO分頁的相關使用說明
當然同樣可以改造成其他的ADO分頁,PHP語言所使用。為了更好的使用這樣的ADO分頁代碼,其混合了函數語言和物件導向程序編制語言,并且完美的適用于編程、算法、技術和探索性開發,因此可以在使用的過程當中感受到趣味性和吸引力。
1,rs.RecordCount
很顯然,RecordCount就是用來顯示數據庫表中一共多少條記錄的,也可以形象地說表中一共有多少行。經常用在分頁中就是一共有N篇文章等總計的信息顯示。
2,rs.PageSize
rs.PageSize也就是一頁的大小,也就表示一張ADO分頁可以顯示記錄的條數。值是自己定義的,比如經常看到的每頁顯示N篇文章之類的信息。
3,rs.AbsolutePage 和 rs.pagecount
說到分頁,一定不能不提到 rs.AbsolutePage 。記錄集的AbsolutePage屬性最主要的作用就是決定著當前顯示的是第幾頁。它的值是有依據的,指定了rs.PageSize,那么rs.pagecount的信息值就是rs.RecordCount和rs.PageSize整除結果。比如:總信息記錄rs.RecordCount共20條,每頁顯示條數rs.PageSize設為5條,那么頁數rs.pagecount數就是20/5=4頁次,而rs.AbsolutePage則就只能是第1頁,第2頁……第4頁。
先看ADO分頁函數:
這是一種非常高效的分頁算法。當數據表中的數據量成百上千萬的時候,上面的這種分頁算法的響應時間是非常短的,通常在幾十毫秒之內。原理很簡單,就是每次分頁,我只取需要的幾十條記錄而已,使用SELECT TOP也正是基于這樣的考慮。
上面的兩個分頁算法的例子中,flymorn都使用了時間字段time來進行ADO分頁,因為在我接觸的絕大多數系統中,我們都需要把用戶最近更新(包括新添加的記錄以及新修改過的老記錄)的內容展示在前面,如果僅僅使用自動編號的ID作為排序字段的話,用戶編輯過的老信息將無法展示在前面。這就是flymorn使用時間字段的原因了。
這里又涉及到聚合索引的問題了。默認情況下,我們是以自動編號ID作為主鍵,并且用作聚合索引列,如果上面的算法中,使用這樣的ID列來排序的話,效率會更高,數據庫響應的時間會更少;然而,我提到了最近更新的內容需要展示在前面的問題。#t#
所以,我們必須使用時間字段來排序。因此,為了更高的分頁效率,我們可以在數據庫設計的時候,把這個時間字段設計為聚合索引列。 通過這樣的設計后,整個分頁效率就會得到非常高的提高了。
然而,把這個時間字段作為聚合索引列,存在又一個小問題。因為數據表在排列數據的時候,是按照聚合索引列來進行物理排序的,當用戶添加數據的時候,沒有什么問題,在數據表的末尾添加就行了;當用戶編輯信息的時候。
數據庫需要根據這個聚合索引列,把剛編輯過的信息也提到表的末尾,這里就需要耗費一定的時間了。就是說,當我們以時間字段為聚合索引列的時候,我們就需要在 ADO分頁的時候多耗費一點的時間。