9

私は最近 MSSQL 2008 R2 にアップグレードしましたが、各テーブルに何百万もの行がある場合、テーブルを更新するための切り捨てと挿入よりも「新しい」マージ関数の方が効率的/高速であるかどうか疑問に思っていました。誰かが彼らのパフォーマンスのデータを提供できればそれは素晴らしいことですが、どんな説明でも役に立ちます!

4

2 に答える 2

1

データの変更を追跡する必要があったため(行のチェックサムを保持していた)、使用しましたが、毎回そのデータを「複製」する必要があるように見えるので、MERGE使用する特別な理由は見当たりません。チェック (主キーにチェックがあり、追加の条件がすべてに置かれます); 使用してからバルクを使用することで、そのすべての条件が機能することはありませんMERGEMERGEWHENTRUNCATEINSERT

ちなみに、これを 100% 真実と見なさないでください。証明するパフォーマンス テストはありません。両方の操作を試して、どちらに時間がかかるかを確認することをお勧めします =)

于 2012-11-15T08:06:31.490 に答える
1

私があなたの主張をTRUNCATE正しくINSERT理解しているかどうかはわかりません。そうでない場合は、お気軽に修正してください。

MERGEUPDATE、既存の行に対して を実行するか、または既存の行が見つからない場合にINSERT.

すべてがINSERTになるため、MERGEの使用を削除することをお勧めTRUNCATEします。私はそれを試したことがないので、その場合INSERTの a の方が速いかどうかはわかりませんが、 orを使用するかどうかを決定するの部分がオーバーヘッドを課すと思います。MERGEMERGEUPDATEINSERT

于 2012-11-15T07:03:53.690 に答える