数据中有上万条记录,能不用WHERE或其它的筛选条件,读取数据库中的第n条到n+100条记录呢?

时间:2023-02-08 23:23:41
差不多分页显示,但数据库太大了,一次读取完所有数据浪费太多的时间了?有办法或其它的方法可以实现吗?

12 个解决方案

#1


你用ADO吗
那就Move 到N
然后把N到N+100的记录加入到记录集中

#2


大哥!我已说不能将数据全部打开,只能打开一部分!

#3


大家给点见意吧!

#4


打开一部分?不现实吧

#5


-- 用SQL Server的示例数据库Northwindow的Order Details表(2155条记录)来测试,速度不会慢
select IDENTITY(int,1,1) as RecID,* into #tmp from [Order Details]
select * from #tmp where RecID >= 2000 And RecID < 2100
drop table #tmp

#6


一个表中的记录根本就没有什么第n条记录的概念,取数据只想取一部分只能用条件筛选.

#7


合理的设计表结构,索引
使用服务器端游标打开
上万条记录根本不是问题

#8


我也觉得是这样,数据库本身没有第n条记录这种概念,这种概念应该存在于你检索出来的记录集上的,也就是说你必须先检索出一堆数据来,才能取其中的第n条。。。。

#9


在ORACLE数据库中有第n条记录这种概念,但那是系统自动在表上加了一个字段存储记录号。在SQL中,只能自己添加一个字段并维护。

#10


我说楼主,首先你的问题问就问的有问题。如果没有选取全部的数据,何来第n条的记录的概念,人家说第几条第几条记录的,都是已经选取,放到的记录集里是才可能说的第几条记录吗嘛。不过你想做什么 大家是明白的。要想大你目的,最接近你的要求的就是啊甘兄弟说的,利用索引,是服务器端游标进行选取你想要的记录,我估计这是比较快的一种方法了

#11


我曾经做过试验,数据库采用Access 2000
80000多条记录,编制了Index
使用ListView来分页显示数据,每页100条
第一次读取全部记录的时间不会超过3 秒
后面换页就根本不在乎了,打开了记录集就不要去关闭
每次定位就可以了

#12


多谢各位!既是这样,结贴了!!!

#1


你用ADO吗
那就Move 到N
然后把N到N+100的记录加入到记录集中

#2


大哥!我已说不能将数据全部打开,只能打开一部分!

#3


大家给点见意吧!

#4


打开一部分?不现实吧

#5


-- 用SQL Server的示例数据库Northwindow的Order Details表(2155条记录)来测试,速度不会慢
select IDENTITY(int,1,1) as RecID,* into #tmp from [Order Details]
select * from #tmp where RecID >= 2000 And RecID < 2100
drop table #tmp

#6


一个表中的记录根本就没有什么第n条记录的概念,取数据只想取一部分只能用条件筛选.

#7


合理的设计表结构,索引
使用服务器端游标打开
上万条记录根本不是问题

#8


我也觉得是这样,数据库本身没有第n条记录这种概念,这种概念应该存在于你检索出来的记录集上的,也就是说你必须先检索出一堆数据来,才能取其中的第n条。。。。

#9


在ORACLE数据库中有第n条记录这种概念,但那是系统自动在表上加了一个字段存储记录号。在SQL中,只能自己添加一个字段并维护。

#10


我说楼主,首先你的问题问就问的有问题。如果没有选取全部的数据,何来第n条的记录的概念,人家说第几条第几条记录的,都是已经选取,放到的记录集里是才可能说的第几条记录吗嘛。不过你想做什么 大家是明白的。要想大你目的,最接近你的要求的就是啊甘兄弟说的,利用索引,是服务器端游标进行选取你想要的记录,我估计这是比较快的一种方法了

#11


我曾经做过试验,数据库采用Access 2000
80000多条记录,编制了Index
使用ListView来分页显示数据,每页100条
第一次读取全部记录的时间不会超过3 秒
后面换页就根本不在乎了,打开了记录集就不要去关闭
每次定位就可以了

#12


多谢各位!既是这样,结贴了!!!