●●代码发布●简单易用的快速分页类

xiaoyuehen 2005-01-18 10:20:51
一直在找最快的分页方法, 发现使用记录集的 RecordCount 属性是造成分页慢最主要的原因, 而用单独语句统计记录数则要快得多. 页面的跳转仍采用 ADO 本身的 AbsolutePage 属性设置, 所以如果把记录数缓存在某个地方, 快速分页也就不远了. 本类参考了 yezi(叶子) 分页类中的思路, 代码由自己重写.
http://blog.csdn.net/xiaoyuehen/archive/2005/01/17/257202.aspx

主要思路: 用一条语句统计(Count)出记录数(而不在查询时获得 RecordCount 属性), 缓存在 Cookies 中, 跳转时就不用再次统计. 使用 ADO 的 AbsolutePage 属性进行页面跳转即可. 为方便调用而写成类, 代码主要地方已有说明.使用时可将Class => End Class之间的代码分离成一个文件方便调用.

硬件环境: AMD Athlon XP 2600+, 256 DDR
软件环境: MS Windows 2000 Advanced Server + IIS 5.0 + Access 2000 + IE 6.0 + 80W 记录
测试结果: 初次运行在 250(首页) - 400(末页)毫秒, (记录数缓存后)在页面间跳转稳定在 47 毫秒以下.第1页跳到最后一页不多于 350 毫秒

适用范围: 用于普通分页. 不适用于有较复杂的查询时: 如条件为"[Title] Like '%最爱%'", 查询的时间大大增加, 就算 Title 字段作了索引也没用. :(

<%@LANGUAGE = "VBScript" CODEPAGE="936"%>
<%Option Explicit%>
<%
Dim intDateStart
intDateStart = Timer()
Rem ## 打开数据库连接
Rem #################################################################
function f__OpenConn()
Dim strDbPath
Dim connstr
strDbPath = "../db/test.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
connstr = connstr & Server.MapPath(strDbPath)
Set conn = Server.CreateObject("Adodb.Connection")
conn.open connstr
End function
Rem #################################################################

Rem ## 关闭数据库连接
Rem #################################################################
function f__CloseConn()
If IsObject(conn) Then
conn.close
End If
Set conn = nothing
End function
Rem #################################################################
Rem 获得执行时间
Rem #################################################################
function getTimeOver(iflag)
Dim tTimeOver
If iflag = 1 Then
tTimeOver = FormatNumber(Timer() - intDateStart, 6, true)
getTimeOver = " 执行时间: " & tTimeOver & " 秒"
Else
tTimeOver = FormatNumber((Timer() - intDateStart) * 1000, 3, true)
getTimeOver = " 执行时间: " & tTimeOver & " 毫秒"
End If
End function
...全文
583 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuehen 2005-02-02
  • 打赏
  • 举报
回复
UP~~~~~~~~~
xiaoyuehen 2005-02-01
  • 打赏
  • 举报
回复
如果你觉得看起来很吃力, 请连接到这个页面
http://blog.csdn.net/xiaoyuehen/archive/2005/01/17/257202.aspx

在这里, 可以看到格式良好, 具有高亮颜色的代码.
tzgpxl 2005-02-01
  • 打赏
  • 举报
回复
还不错。先收藏一下先。
wzhiyuan 2005-01-31
  • 打赏
  • 举报
回复
up.
xiaoyuehen 2005-01-31
  • 打赏
  • 举报
回复
另外, 如果你觉得看起来很吃力, 请连接到这个页面
http://blog.csdn.net/xiaoyuehen/archive/2005/01/17/257202.aspx

在这里, 可以看到格式良好, 具有高亮颜色的代码.
xiaoyuehen 2005-01-31
  • 打赏
  • 举报
回复
回楼上, 你可以将Class -> End Class的代码封装在一个文件里, 调用就很简单了.

UP...
yqh1314 2005-01-27
  • 打赏
  • 举报
回复
怎么那么多````看起来都头大 有没有更简单的!
TSD 2005-01-27
  • 打赏
  • 举报
回复
不错,学习!
chang1216 2005-01-24
  • 打赏
  • 举报
回复
好东西
myvicy 2005-01-24
  • 打赏
  • 举报
回复
xiaoyuehen 2005-01-24
  • 打赏
  • 举报
回复
UP~~~~~~~~~~
dddst 2005-01-24
  • 打赏
  • 举报
回复
看看你的BLOG先
xiaoyuehen 2005-01-22
  • 打赏
  • 举报
回复
假设你的数据表确实有 10000 条记录, 但显示为 9999
问题可能出现在: 数据行 strPrimaryKey 字段中有 Null 的行, 在统计时消除了.
解决办法: 将 strPrimaryKey 属性设置为 1
xiaoyuehen 2005-01-22
  • 打赏
  • 举报
回复
晕~~~~~~我看看先.......
风流才子 2005-01-22
  • 打赏
  • 举报
回复
测试了一下,还不错,收录了。。。但发现个问题,记录总数少1,倒。。。
兄弟来看看我的分页:http://demo.54caizi.com/pageac/

你的分页我也收录了,你看看:http://demo.54caizi.com/pageac/pageview.asp
记录少1,晕。没时间仔细看,有时间再说,兄弟你也检查一下,到底哪里有问题。
kendo7 2005-01-22
  • 打赏
  • 举报
回复
拿回去研究
xiaoyuehen 2005-01-22
  • 打赏
  • 举报
回复
将所有代码组合起来, 更改相关的数据库连接, 类属性设置即可进行测试.

http://blog.csdn.net/xiaoyuehen/archive/2005/01/17/257202.aspx
可以看到更好的代码显示(高亮颜色).
xiaoyuehen 2005-01-19
  • 打赏
  • 举报
回复
顶~~~~~~~~
injoo 2005-01-19
  • 打赏
  • 举报
回复
不错,你的BLOG里面有好多好东西
心情解码 2005-01-19
  • 打赏
  • 举报
回复
收藏





ding....
加载更多回复(19)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧