主题:关于数据集的处理
dsbt2035s
[专家分:40] 发布于 2006-07-21 18:35:00
一个网站的数据存储如果很大,比如超过了10万条纪录。每次访问都回站用服务器的很大的资源,我想了个方法可以避免这个方法,比如每次只提取数据库纪录中5%条纪录,用SQL的TOP方法,给于用户显示,当用户有更进一步的有要求的时候,在显示下一条纪录,再触发SQL语句,再显示5%。然后就以此类推。
问题在这里
第一步显示前5%条纪录很方便,但后面怎么去判断剩余的纪录,而且不显示重复纪录,这个就有点难了。应该还是在Top语句上做文章,请大家讨论讨论。
回复列表 (共6个回复)
沙发
dsbt2035s [专家分:40] 发布于 2006-07-27 20:27:00
不是吧!一个 星期了,我的问题没这么难吧,大家别谦虚,有什么意见尽管提就好了
别问对错,摆出来大家分析下就好!
板凳
家人 [专家分:6760] 发布于 2006-08-01 13:50:00
得到返回记录集最大最小ID(主键)
下一条数据可以:
select top 20 * from tb where id>最大id order by id
上一条数据可以
select top 20 * from tb where id<最小id order by id desc
3 楼
dsbt2035s [专家分:40] 发布于 2006-08-01 21:37:00
id是个变量吧!
用他来判断,这个我也想过但是,这个变量的值怎么去判断,我就有点晕了,
因为我没次查询的条件是不同的,所以这个ID判断起来就比叫复杂,还请高手明示
4 楼
家人 [专家分:6760] 发布于 2006-08-02 11:12:00
id是表的主键
返回记录集rs以后,你可以分别用rs.movefirst、rs.movelast方法获得记录集最小和最小大键值
5 楼
dsbt2035s [专家分:40] 发布于 2006-08-02 19:49:00
比如这个表里面字段有 城市,人,id
当我找这个城市里的所有的人的是时候,
ID不是不可能不是按顺序的,也许就是1,23,33,34,55.....
这样排列的,我怎么可以取出100个纪录,如果有需求然后在取后面100个
我要还要判断 100个ID
麻烦再给于明示
6 楼
家人 [专家分:6760] 发布于 2006-08-03 09:33:00
id 不用连续的,top的作用就是指定读取多少条数据
比如你的ID是:1,2, 5,23,33,34,55.....
那么
select top 3 * from tb where id<55 order by id desc 返回ID是34,33,23
select top 3 * from tb where id>5 返回的是23,33,34
当然还要注意排序。如果你返回的是recordset(rs),那rs.movefirst、rs.movelast就可以得到当前数据最大和最小ID,作为下次读取数据的参数了
道理就是这样,具体实现还有许多细节,要你自己完善
我来回复