ACCESS 数据库大数据量分页的几种方法比较及测试结果分析
本文解决的问题:
1.ACCESS 是否存在更有效率的分页方法?
2.现有 ACCESS 大数据量 10 万条数据分页的效率测试
3.ACCESS 的数据承载量到底有多大?
相信很多 ASP 的站点还在使用 access 数据库,因为 access 数据库无须开专门的数据库空间,调用,
迁移也方便,节省费用。另外对网站搭建者的专业能力要求也相对低一些。但随着网站的运行,数据库体
积越来越大,数据量也从最初的几百条到了现在的上万条,上十万条甚至更多。于是因数据应用级别的改
变带来的各种各样的应用问题出现了。而其中大数据量的列表分页效率问题更是让很多人头疼。笔者随便
通过“大数据量分页效率”,“access 分页”等关键词分别百度和谷歌了一下,发现有此疑问的大有人在。很
多网页上也给出了不同的解决办法。那么,这些方法到底能达到优化效率,提高速度的目的吗?
先让我们来看看以下的几个 access 分页优化方案,当然如果你直接将数据库升级到 sql server,那
么有更好的诸如存储过程等方法。今天我们就讨论一下 access 大数据量优化分页方法,以及 access 到
底能承受多少数据量。
方案一:利用 ado 本身的结果集的 pagesize,AbsolutePage 的属性来进行分页
程序示例:(仅供示意,完善的各种条件判断自行添加)
MaxPerPage=20
page=cint(request("page"))
sql="select * from 表 where 条件 order by 排序条件"
set rst=server.CreateObject("adodb.recordset")
rst.open sql,conn,1,1
rst.pagesize=MaxPerPage
rst.AbsolutePage = Page '将记录定位到对应页数的第一条
for i=1 to MaxPerPage
循环列表
rst.movenext
if rst.eof then exit for
next
这个方法是最为常用的 access 分页方法。
缺点:每次都要读入符合条件的所有记录,然后再定位于对应页的记录。当数据量大的时候,效率就十分
的低下。
与此相似的方法是利用 ado 的 move 方法,每次将记录集游标移动 (page-1)*pagesize ,就实现了了
记录的分页。经过测试,效率与方案一大致相同。
方案二:
1.设置一个自增长字段.并且该字段为 INDEX.
2.由于是 ACCESS ,所以,只能是前台分页.自增长字段目的,就是为了实现分页功能.
1> 记录用户前页的最后一个 自增值 ,例如 M .
2> 下一页,取下一页的开始值.M+1 ,结束值: M+1+1.5*PAGESIZE (注:由于数据库会有增删操作,