网站大量收购独家精品文档,联系QQ:2885784924

ACCESS数据库大数据量分页的几种方法.docVIP

ACCESS数据库大数据量分页的几种方法.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ACCESS数据库大数据量分页的几种方法.doc

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方法,每次将记录集游标移动 (1)*pagesize ,就实现了了记录的分页。经过测试,效率与方案一大致相同。 方案二: 1.设置一个自增长字段.并且该字段为INDEX. 2.由于是 ACCESS ,所以,只能是前台分页.自增长字段目的,就是为了实现分页功能. ??? 1 记录用户前页的最后一个 自增值 ,例如 M .   2 下一页,取下一页的开始值.M+1 ,结束值: M+1+1.5*PAGESIZE (注:由于数据库会有增删操作,故应该取页大小应该有一个系数,你可以根据情况自定一个1大的系数.   3 前台循环取 RS 的前 PAGESIZE 条, 写到一个 新的RS中,并返回. 这个方案通过自增值来分部截取不同分页的数据列表,文中考虑到数据库有增删操作,所以加入了一个系数的概念,这是一个不得已的做法。这个方案可以保证分页效率,但只能运用于增删不太频繁(自增值字段相邻记录的值相差不多的情况)的数据表。 方案三:not in 方法。这个方案在很多网站上都转载。据说对于越往前的分页效率提高越明显。我一直有所怀疑,因为“not in”本身就是个耗费资源的算法。很难相信一个低效率的方法能提高大数据量分页的效率。示例如下: sql=select top 12 * from 表 where Id not in(select top page*pagesize Id from 表 order by id desc) order by Id desc 如果是第9页,每页20条即 select top 20 * from 表 where Id not in(select top 9*20 Id from 表 order by id desc) order by Id desc 原理即:选择top 20 的记录,条件是id不在前面分页的记录ID里。通过这种方式过滤掉前面分页的记录,然后通过top高效率的方式获取当页的记录。 “top”确实高效,但是“not in”呢? 于是我直接用这种方法测试了一下,测试条件:10万条数据。点击查询 MY GOD,长时间无响应,最后Ctrl+Alt+Delete 结束任务。再试,结果同样如此。于是改变一下测试条件,变成1000条数据,OK,结果显示非常顺利。 结论:如果你是大数据量分页,还是不要用这种方法,会死人的。 方案四:select * from (select top pagesi

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档