获得小块设置大型数据以节省内存?(Get large data set in small piece

2019-10-18 20:18发布

我有一个“庞大”的结果从SQL查询设置。 约2-3万行类型为varchar(50)的列。 这可能不是太大,是担心。 但是,如果我有什么要处理10-15这样的列?

所以,这使我想到我的问题 - 有没有一种方法来检索一个巨大的使用SQL小块数据量,把它们装入内存,做加工用哪个语言/工具,你希望(我使用C#和SSIS的ETL工具)?

如果你觉得这个问题需要更清晰,请把注释。

Answer 1:

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



Answer 2:

是的,这是可能的。 在C#中,你可以使用LINQ只要你遍历结果(和避免调用ToList()或类似的东西)从结果集的行会被加载一次一个。 如果你不使用LINQ,你可以使用SqlDataReader来代替。



文章来源: Get large data set in small pieces to save memory?