1

SQL クエリからの「巨大な」結果セットがあります。varchar(50) 型の列の約 200 万から 300 万行。これは心配するほど大きくないかもしれません。しかし、そのような列を 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()などを避ける限り)、結果セットの行は一度に 1 つずつ読み込まれます。LINQ を使用していない場合は、代わりに SqlDataReader を使用できます。

于 2013-10-23T23:10:48.860 に答える