怎么一行一行的遍历数据库中的所有行?

0
如果一个数据表行数非常多,所以一次性读取所有数据行出来会导致内存消耗过大,有没有什么语句可以一次读取一行记录的方式遍历所有记录行而保持高效率.

我测试了
select top 1 * from 
( select top 1900019 * from t_person order by id asc) a
order by id desc
 语句,它每次都需要一次性读取所有N行数据出来,然后再返回指定行,档读取到190万行后, 读取时间已经接近0.5秒了.这个语句效率太低,所以请问在不知道主键ID的值时,有什么方法可以保持高效率地从数据库中一行一行的读取数据?

就像StreamReader类的方法ReadLine() 一行,它一次读取一行并提升流位置,所以每次读取一行的效率都是相近的,不会因为行数越多,而读取效率明显下降。所以请问数据库有类似这种读取方式的语句吗?
已邀请:
2

- 取是能力,舍是境界 2015-10-11 回答

你的这个描述好像游标的功能呀
 
declare @column1 int
declare @column2 varchar(20)
declare cur cursor for
select column1,column2 from t_person
open cur
fetch cur into @column1,@column2
while @@FETCH_STATUS=0
begin
select @column1,@column2
fetch cur into @column1,@column2
end
close cur
deallocate cur
0

郑大鹏 2015-10-11 回答

对,用游标啊!!!!!!!!!!
0

老头子 - 专注是唯一的捷径 2015-10-11 回答

Oracle可以用游标。sqlserver不知道

要回复问题请先登录注册