私は最近 MSSQL 2008 R2 にアップグレードしましたが、各テーブルに何百万もの行がある場合、テーブルを更新するための切り捨てと挿入よりも「新しい」マージ関数の方が効率的/高速であるかどうか疑問に思っていました。誰かが彼らのパフォーマンスのデータを提供できればそれは素晴らしいことですが、どんな説明でも役に立ちます!
2 に答える
データの変更を追跡する必要があったため(行のチェックサムを保持していた)、使用しましたが、毎回そのデータを「複製」する必要があるように見えるので、MERGE
使用する特別な理由は見当たりません。チェック (主キーにチェックがあり、追加の条件がすべてに置かれます); 使用してからバルクを使用することで、そのすべての条件が機能することはありませんMERGE
MERGE
WHEN
TRUNCATE
INSERT
ちなみに、これを 100% 真実と見なさないでください。証明するパフォーマンス テストはありません。両方の操作を試して、どちらに時間がかかるかを確認することをお勧めします =)
私があなたの主張をTRUNCATE
正しくINSERT
理解しているかどうかはわかりません。そうでない場合は、お気軽に修正してください。
MERGE
はUPDATE
、既存の行に対して を実行するか、または既存の行が見つからない場合にINSERT
.
すべてがINSERTになるため、MERGEの使用を削除することをお勧めTRUNCATE
します。私はそれを試したことがないので、その場合INSERT
の a の方が速いかどうかはわかりませんが、 orを使用するかどうかを決定するの部分がオーバーヘッドを課すと思います。MERGE
MERGE
UPDATE
INSERT