3

MARS を使用して 7000 行以上を更新/挿入するサービスがあります。これを行うより良い方法はありますか?

4

1 に答える 1

6

これを定期的に行っている場合、このボリュームでは、SqlBulkCopyデータをステージング テーブルにプッシュし (ターゲット テーブルと同じスキーマですが、分離されています)、ストアド プロシージャを使用して挿入/更新を行います (テーブルからステージング テーブルを実際のテーブルに) - おそらくトランザクションにラップされています。

これにより、ラウンドトリップが最小限に抑えられ、データのプッシュに一括挿入 API が使用されます。

1 つのバッチですべてを必要としない場合、別のオプションとして、(たとえば) 100 レコードのブロックでデータを処理することができます。これは、トランザクションに時間がかかりすぎることなく機能するはずです。一括コピーのアプローチよりも著しく遅くなりますが、オブジェクトベースであり、追加のツールや言語のセットを使用する必要がないという利点があります。

于 2009-10-23T06:41:37.790 に答える