1

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

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

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

4

2 回答 2

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 分页

于 2013-10-24T07:23:07.133 回答
1

是的,这是可能的。在 C# 中,您可以使用 LINQ,只要您遍历结果(并避免调用ToList()或类似的东西),结果集中的行将一次加载一个。如果您不使用 LINQ,则可以改用 SqlDataReader。

于 2013-10-23T23:10:48.860 回答