Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fügen Sie Update Stored Proc auf SQL Server ein

Ihre Vermutung ist richtig, dies ist der optimale Weg und heißt upsert/merge.

Bedeutung von UPSERT - von sqlservercentral.com:

Für jede Aktualisierung im oben genannten Fall entfernen wir einen zusätzlichen Lesevorgang aus der Tabelle, wenn wir UPSERT anstelle von EXISTS verwenden. Leider verwenden sowohl die UPSERT- als auch die IF EXISTS-Methode bei einem Insert die gleiche Anzahl von Lesevorgängen auf der Tabelle. Daher sollte die Prüfung auf Existenz nur erfolgen getan werden, wenn es einen triftigen Grund gibt, um die zusätzliche E/A zu rechtfertigen. Die optimale Vorgehensweise besteht darin, dafür zu sorgen, dass möglichst wenige Lesevorgänge in der DB vorhanden sind.

Die beste Strategie besteht darin, das Update zu versuchen. Wenn keine Zeilen von der Aktualisierung betroffen sind, dann einfügen. In den meisten Fällen ist die Zeile bereits vorhanden und es ist nur ein I/O erforderlich.

Bearbeiten :Bitte sehen Sie sich diese Antwort und den verlinkten Blogpost an, um mehr über die Probleme mit diesem Muster zu erfahren und wie es sicher funktioniert.