我有一个来自 SQL 查询的“巨大”结果集。varchar(50) 类型的列大约有 2-3 百万行。这可能不是太大而不必担心。但是,如果我必须处理 10-15 个这样的列怎么办?
所以,这让我想到了我的问题 - 有没有办法使用 SQL 以小块的形式检索大量数据,将它们放入内存,使用您希望使用的任何语言/工具进行处理(我使用 C# 和 SSIS ETL 工具)?
如果您觉得这个问题需要更清楚,请发表评论。
我有一个来自 SQL 查询的“巨大”结果集。varchar(50) 类型的列大约有 2-3 百万行。这可能不是太大而不必担心。但是,如果我必须处理 10-15 个这样的列怎么办?
所以,这让我想到了我的问题 - 有没有办法使用 SQL 以小块的形式检索大量数据,将它们放入内存,使用您希望使用的任何语言/工具进行处理(我使用 C# 和 SSIS ETL 工具)?
如果您觉得这个问题需要更清楚,请发表评论。
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 分页
是的,这是可能的。在 C# 中,您可以使用 LINQ,只要您遍历结果(并避免调用ToList()
或类似的东西),结果集中的行将一次加载一个。如果您不使用 LINQ,则可以改用 SqlDataReader。