4000万行のテーブルがあります。
一度に200万枚くらい拾って「加工」したい。
なんで?
1000 万以上の行を処理する Cos 処理は、パフォーマンスを低下させ、しばしばタイムアウトします。(これはデータ サイズに関係なく機能する必要があるため、タイムアウト制限を増やし続けることはできません。)
また、SQL Server を使用しています。
1 に答える
1
ID キーなど、増加するキーはありますか? そして、それはクラスター化インデックスですか?もしそうなら、最後に到達したキーを追跡するのはかなり簡単で、次のようなことを行う必要があります。
SELECT TOP 1000000 *
FROM [MyTable]
WHERE [Id] > @LastId
ORDER BY [Id]
ExecuteReader
また、多くの行をバッファリングしないように、必ず のようなもので読んでください。
もちろん、数千行を超える場合は、時折の往復を受け入れて、一度に (たとえば) 10000 行の要求を多数行うこともできます。これが実際には効率が悪いとは思いません(あちこちで数ミリ秒)。
于 2009-04-03T09:26:33.473 に答える