0

30 のテーブルにわたってテーブルごとに 1 つのレコードを挿入する必要があります。他のシステムからのデータ。初めてテーブルにデータを挿入する必要があり、更新が発生した場合は、SQL Server のテーブルを更新する必要があります。2 つのオプションがあります。

a) 個々のテーブル行のタイムスタンプを確認し、タイムスタンプが大きい場合は更新できます。

b) ステートウェイでレコードを削除してデータを挿入できるたびに。

SQL Server データベースで高速になるのはどれですか? 状況に対処するための他のオプションはありますか?

4

2 に答える 2

1

レコードのインデックス フィールドを変更しない場合、最初に更新してから挿入しようとする戦略は、通常、データベースに多数のインデックス情報の更新を強制しないため、削除/挿入よりも高速です。

Sql2008+ を使用している場合は、merge コマンドを使用する必要があります。これは、更新/挿入条件を明確かつ明確に処理するためです。

追加した

また、めったに更新されない(つまり、90%の挿入)使用パターンを知っていることも付け加えておく必要があります。多くの詳細に依存して、更新/挿入よりもドロップ/挿入が速い場合があります。とにかく、2008以降を使用している場合、マージが明らかに勝者です

于 2013-10-03T20:27:19.793 に答える
0

私は一般的に落として再挿入するのが好きです。よりクリーンでコーディングしやすいと思います。ただし、これが非常に頻繁に発生し、並行性の問題が心配な場合は、おそらくオプション 1 を使用することをお勧めします。

また、考慮すべきもう1つのことは、タイムスタンプチェックが失敗する頻度です(挿入も更新も必要ない場合)。データの 99% が冗長/古いデータである場合は、オプション 1 を選択したほうがよいでしょう。

于 2013-10-03T19:50:41.553 に答える