Access数据库的高效分页

=========================================
以下所有分页方法只能用ID排序分页!不能用其他字段。
//max()分页方法只能根据ID(自增,主键,永远不会重复!),其他字段的话可能会出现重复的值,出现重复的值后用MAX()然后>或<方法就不管用了。
=========================================
access数据库以方便携带,容易部署而受到一些小型系统的喜欢

 

最近在做一个blogs,因为空间的限制,只能用Access数据库

 

测试了一下,当数据量2000+的时候分页比较慢

我的SQL语句是

sql = "select top 10 * from tb_article where id not in (select top " + current * 10 + " id from tb_article order by id desc ) order by id desc";

 

current 是页码

 

随后想到一种:

sql = "select * from tb_article where id between "+10*current +" and "+10*(current+1) +" order by id desc";

不过在删除存在的情况下会有问题

 

 

第三种想到的方法:       

sql = "select top 10 * from tb_article where id >"+current*10 +" order by id desc";

同样,在删除情况下还是会有问题

 

最后又想到一个思路,还是用between

同时新建一个数据表,里面有三个字段,(页码,首记录ID,尾记录ID)

每次分页的时候首先查询这个表

应该速度会加快.

目前仅在思想中,未测试

 

不过此办法比较麻烦,最后使用如下方法

int total = GetListCount(current);


   sql = "select * from tb_article where id between

 

("+total+"-(SELECT MAX(id)   FROM (SELECT TOP " + (current + 1) * 10 + " id FROM tb_article order by id))+1)

and

("+total+"-(SELECT MAX(id)   FROM (SELECT TOP " + current * 10 + " id FROM tb_article order by id)))

 

order by id desc ";

 

转载于:https://www.cnblogs.com/luoyaoquan/archive/2011/05/29/2062422.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值