1

私はまだ C# と SQL Server の学習曲線上にあるので、私の「グリーネス」を許してください。

これが私のシナリオです:

10,000 行の EMPLOYEE テーブルがあります。これらの各従業員は、TRANSACTIONS テーブルにトランザクションを持っています。

トランザクション テーブルには、基本給、代理手当、残業時間などの給与要素があります。また、前払い控除、一部のローン (利息付き)、貯蓄 (年金、社会保障貯蓄など) などの給与控除もあります。

各従業員の取引を調べて、税金、ローンの未払い残高、貯蓄の残高を更新し、時間を支払い/控除やその他のものに変換する必要があります。

この処理により、期間マーカー (2013 年 4 月の場合は 2013-04 など) を含む、各従業員の新しい行セットが得られます。今後の参照のために、これを HISTORY テーブルに保存する必要があります。

10,000 人の従業員テーブル全体とそのトランザクションを処理するための最良の方法は何ですか?

リーダーを介してテーブル全体をメモリに取り込むことは良い習慣ではないと言われ、同意します。

データベースから従業員を引き出し続け、そのトランザクションを処理し、履歴をデータベースにコミットしますか? そして、次などを引っ張りますか?

バックエンドへの呼び出しが多すぎますか?

(EFは私にとってオプションではありません.ADO.NETで生のSQLを実行しています)

これについて何か助けていただければ幸いです。

4

2 に答える 2

1

を使用してチェックアウトしROW_NUMBER()ます。これをプログラムで使用して、一度に「x」行数を使用して大きなテーブルを本質的に参照できるようにすることができます。この同じ方法を使用して、一度に 1000 行以上のジョブをバッチ処理することも考えられます。

詳細については、このリンクを参照してください。

于 2013-04-24T11:44:48.653 に答える