ASP

本类阅读TOP10

·asp常用数据库连接方法和技巧
·无组件生成BMP验证码
·一些常用的辅助代码 (网络收藏)
·JavaScript实现的数据表格:冻结列、调整列宽和客户端排序
·VisualStudio.NET_2003及其 MSDN 下载地址
·ASP模拟MVC模式编程
·图片以二进制流输出到网页
·MD5加密算法 ASP版
·ASP.NET编程中的十大技巧
·改进 ASP 的字符串处理性能

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一切都因为分页-再谈分页

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

很久没有被分页困惑了,因为一直以来操作的表中数据量都不大,所以很偷懒地使用了纪录集的PageSize与AbsolutePage。这个的弊端就是一次性地把用到用不到的记录全读出来了,记录数一多就很慢。
解决的思路是,找到一种方法,只读出需要的记录~呵呵~
比较常见的是利用了IN 操作符,例如
SELECT TOP  PageSize * From A WHERE id NOT IN (SELECT TOP PageSize*PageNo id FROM A WHERE )

注意一下加红的那部分,select 语句中用到的是他们的值
同样的,数据不是很多的话还行,多了同样是不行的,因为IN的效率不高嘛
思来想去,找到一个方法,利用了id(俺一直是把它设成自增的)的一个特性,
id是从小到大排的,其实只要找到当前页最小id应该大于多少,然后再用上TOP 操作符。
看看
SELECT TOP PageSize  * FROM A WHERE id > MinID
第一页的 MinID 当然是 0,然后就可以得出第一页最大的id值,它正是第二页中id必须大于的值,类推~
当然,有一个问题,如果你想直接跳到指定页~~那就不好办了:(
跳到最后一页到还是很简单的,只要使用ORDER BY id DESC


这个思想还是有个破绽呀,如果不按id排序的话,就会很麻烦,可以想到的解决方法是,将上面的做为子查询,外面再套一层查询~
如果看不明白的话,抱歉,那只说明俺的表达能力低虐~而已~
呵呵~所以不用放心上啦!

 、)



相关文章

相关软件