多数のレコードを持つテーブルを反復処理する正しい方法は何ですか?私はテーブルでこれまでの記録を評価する必要があります。私はEntity Frameworkを使用してMS SQLデータベースに接続して情報を取得しています。私は単純なforeach
ループを使用していました。Entity Framework foreachで80万レコードを超えるテーブル
foreach (var x in MyEntity.MyTable)
{
//logic process
}
これは、50万レコード(正確な数字がない)未満のテーブルでは完全に機能します。問題は、大きなテーブルにヒットしたときに、アプリケーションが不安定になり、クラッシュするレコード数が800,000を超える場合です。私は(4〜6ギガバイト程度)RAMの多くを使用しているアプリに注意してください
ページングを実装します。一度にすべてのレコードをメモリに保存する必要はほとんどありません。また、アプリケーションは単に「不安定になりクラッシュする」だけでなく、例外を与えます。あなたはその例外を研究しようとしましたか? – CodeCaster
あなたのプロセスは賢明ですか?または、この操作をSQLだけにしてみてください。 –
一度に500kレコードを処理しますか? –