0

1人のユーザーの給与を計算している5000件のレコードがあり、データベース内の彼のデータを更新しています。したがって、5000レコードを更新するのにかなり時間がかかります。最初にすべてのユーザーの給与を計算してから、dbのレコードに更新したいと思います。シングルクリックでdbを更新できる他の方法はありますか

4

1 に答える 1

0

それは、データ アクセス レイヤーをどのように管理しているか、および計算を行うために必要なデータに大きく依存します。必要なすべてのデータが 1 つのテーブルだけにありますか?それとも、別のテーブルから他のデータをフェッチする必要がある各レコードについてですか?

1 つの方法は、各レコードを取得し、トランザクションで計算を実行してから、データベースに保存することです。このように、ajax UI を利用して、計算の進行状況をユーザーに通知することもできます。このように、SqlDataReader を使用してデータをフェッチする必要があります。これは、非常に最適化されており、DataSet および DataTables を使用するよりもオーバーヘッドが少なく、また、いくつかの型キャストを防ぐことができるためです。さらに、TPL を利用して最適化したり、毎回 N レコードを取得/更新するように構成可能にしたりすることもできます。このアプローチは、レコードの ID を持っている場合に機能します。また、再実行する代わりに計算を再開できるように、切断やクラッシュ、または iisreset の実行が発生した場合に計算を追跡するためのレコード用のフィールドも必要です。

于 2012-10-18T08:00:30.293 に答える