回 帖 发 新 帖 刷新版面

主题:关于数据集的处理

一个网站的数据存储如果很大,比如超过了10万条纪录。每次访问都回站用服务器的很大的资源,我想了个方法可以避免这个方法,比如每次只提取数据库纪录中5%条纪录,用SQL的TOP方法,给于用户显示,当用户有更进一步的有要求的时候,在显示下一条纪录,再触发SQL语句,再显示5%。然后就以此类推。

问题在这里

第一步显示前5%条纪录很方便,但后面怎么去判断剩余的纪录,而且不显示重复纪录,这个就有点难了。应该还是在Top语句上做文章,请大家讨论讨论。

回复列表 (共6个回复)

沙发

不是吧!一个 星期了,我的问题没这么难吧,大家别谦虚,有什么意见尽管提就好了
别问对错,摆出来大家分析下就好!

板凳

得到返回记录集最大最小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 楼

id是个变量吧!
用他来判断,这个我也想过但是,这个变量的值怎么去判断,我就有点晕了,
因为我没次查询的条件是不同的,所以这个ID判断起来就比叫复杂,还请高手明示

4 楼

id是表的主键
返回记录集rs以后,你可以分别用rs.movefirst、rs.movelast方法获得记录集最小和最小大键值

5 楼

比如这个表里面字段有 城市,人,id
当我找这个城市里的所有的人的是时候,
ID不是不可能不是按顺序的,也许就是1,23,33,34,55.....
这样排列的,我怎么可以取出100个纪录,如果有需求然后在取后面100个
我要还要判断 100个ID

麻烦再给于明示

6 楼

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,作为下次读取数据的参数了

道理就是这样,具体实现还有许多细节,要你自己完善

我来回复

您尚未登录,请登录后再回复。点此登录或注册