获取大块数据以节省内存?

时间:2013-10-23 23:05:47

标签: sql sql-server sql-server-2008

我有一个SQL查询的“巨大”结果集。大约2-3百万行varchar(50)的列。这可能不会太大而不必担心。但是,如果我必须处理,该怎么办? 10-15这样的列?

所以,这让我想到了一个问题 - 是否有办法使用SQL检索大块数据,将它们放入内存,使用您希望的任何语言/工具进行处理(我使用C#和SSIS ETL)工具)?

如果您觉得这个问题需要更清楚,请发表评论。

2 个答案:

答案 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。