ASP

本类阅读TOP10

·asp常用数据库连接方法和技巧
·VisualStudio.NET_2003及其 MSDN 下载地址
·session的用法具体解说
·MD5加密算法 ASP版
·JavaScript实现的数据表格:冻结列、调整列宽和客户端排序
·无组件生成BMP验证码
·一些常用的辅助代码 (网络收藏)
·ASP.net中md5加密码的方法
·ASP模拟MVC模式编程
·ASP.NET编程中的十大技巧

分类导航
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排序的话,就会很麻烦,可以想到的解决方法是,将上面的做为子查询,外面再套一层查询~
如果看不明白的话,抱歉,那只说明俺的表达能力低虐~而已~
呵呵~所以不用放心上啦!

 、)



相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有