sql >> データベース >  >> RDS >> Sqlserver

SQLServerにUpdateストアドプロシージャを挿入します

    あなたの仮定は正しいです、これはそれを行うための最適な方法であり、それはアップサート/マージと呼ばれます。

    UPSERTの重要性-sqlservercentral.comから:

    上記の場合の更新ごとに、EXISTSの代わりにUPSERTを使用すると、テーブルから1つの追加の読み取りが削除されます。残念ながら、Insertの場合、UPSERTメソッドとIF EXISTSメソッドの両方で、テーブルで同じ数の読み取りが使用されます。追加のI/Oを正当化する非常に正当な理由がある場合に実行されます。物事を行うための最適化された方法は、DBでの読み取りができるだけ少なくなるようにすることです。

    最善の戦略は、更新を試みることです。更新の影響を受ける行がない場合は、挿入します。ほとんどの場合、行はすでに存在し、必要なI/Oは1つだけです。

    編集 :この回答とリンクされたブログ投稿をチェックして、このパターンの問題とそれを安全に機能させる方法について学んでください。



    1. バインド変数を使用してテーブルと列の名前を動的に渡す

    2. sys.dm_exec_describe_first_result_set_for_objectがSQLServerでどのように機能するか

    3. 「ALTERTABLESWITCHステートメントが失敗しました」を修正する方法メッセージ4982(SQL Server)

    4. MariaDBでのMID()のしくみ