sql >> Databáze >  >> RDS >> Sqlserver

Vložte aktualizaci uloženou proc na SQL Server

Váš předpoklad je správný, toto je optimální způsob, jak toho dosáhnout a nazývá se upsert/merge.

Význam UPSERT - z sqlservercentral.com:

Pro každou aktualizaci ve výše uvedeném případě odstraňujeme z tabulky jedno dodatečné čtení, pokud použijeme UPSERT místo EXISTS. Bohužel pro přílohu používají metody UPSERT i IF EXISTS stejný počet čtení v tabulce. Proto by kontrola existence měla pouze být proveden, když existuje velmi platný důvod ospravedlnit dodatečné I/O. Optimalizovaný způsob, jak dělat věci, je zajistit, abyste měli v DB co nejméně čtení.

Nejlepší strategií je pokus o aktualizaci. Pokud aktualizace neovlivní žádné řádky, vložte. Ve většině případů bude řádek již existovat a bude vyžadován pouze jeden I/O.

Upravit :Podívejte se prosím na tuto odpověď a na odkazovaný příspěvek na blogu, kde se dozvíte o problémech s tímto vzorem a o tom, jak zajistit jeho bezpečné fungování.



  1. 12c Přesun datových souborů online

  2. SET versus SELECT při přiřazování proměnných?

  3. Ad-hoc spojovací řetězce a heterogenní dotazy pro MS Access

  4. Vyberte datový typ pole v postgresu