我有一个SQL查询的“巨大”结果集。大约2-3百万行varchar(50)的列。这可能不会太大而不必担心。但是,如果我必须处理,该怎么办? 10-15这样的列?
所以,这让我想到了一个问题 - 是否有办法使用SQL检索大块数据,将它们放入内存,使用您希望的任何语言/工具进行处理(我使用C#和SSIS ETL)工具)?
如果您觉得这个问题需要更清楚,请发表评论。
答案 0 :(得分:2)
DECLARE @PageN int = 0 -- 0..N
DECLARE @RowPerPage int = 20
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [LastLoginDate]) as rowNumber
,Customer.*
FROM dbo.Customer
--WHERE <Search cond>
) paging
WHERE rowNumber > @PageN * @RowPerPage
AND rowNumber <= (@PageN + 1) * @RowPerPage;
为MS SQL 2008进行分页
答案 1 :(得分:1)
是的,这是可能的。在C#中,您可以使用LINQ,只要迭代结果(并避免调用ToList()
或类似的东西),结果集中的行将一次加载一个。如果您不使用LINQ,则可以使用SqlDataReader。