sql >> Database >  >> RDS >> Sqlserver

Invoegen Update opgeslagen proces op SQL Server

Je aanname is juist, dit is de optimale manier om het te doen en het heet upsert/merge.

Belang van UPSERT - van sqlservercentral.com:

Voor elke update in het bovengenoemde geval verwijderen we één extra read uit de tabel als we de UPSERT gebruiken in plaats van EXISTS. Helaas gebruiken zowel de UPSERT- als de IF EXISTS-methode voor een Insert hetzelfde aantal reads op de tabel. Daarom zou de controle op bestaan ​​alleen moeten worden gedaan wanneer er een zeer geldige reden is om de extra I/O te rechtvaardigen. De geoptimaliseerde manier om dingen te doen, is ervoor te zorgen dat u zo min mogelijk gegevens op de DB leest.

De beste strategie is om de update te proberen. Als er geen rijen worden beïnvloed door de update, voeg dan in. In de meeste gevallen bestaat de rij al en is er slechts één I/O vereist.

Bewerken :Bekijk dit antwoord en de gelinkte blogpost om meer te weten te komen over de problemen met dit patroon en hoe je het veilig kunt laten werken.



  1. Basisprincipes van sys.dm_exec_requests

  2. Hoe u herhalende datums opslaat, rekening houdend met de zomertijd

  3. Postgres-wijzigingen in Java-toepassing op de hoogte stellen

  4. Bepaling en configuratie van de R12.2-editie