MERGE gegen UPSERT

Ich habe eine Anwendung, die ich im Zugriff mit einem SQL server Backend schreibe. Einer der am häufigsten verwendeten Teile ist, wo die Benutzer eine Antwort auf eine Frage auswählen, eine gespeicherte Prozedur wird dann ausgetriggers, die sieht, ob eine Antwort bereits gegeben wurde, wenn es ein UPDATE ausgeführt wird, wenn nicht ein INSERT ausgeführt wird.

Dies funktioniert ganz gut, aber jetzt haben wir ein Upgrade auf SQL server 2008 Express Ich frage mich, ob es besser wäre / schneller / effizienter, um diese SP umzuschreiben, um den neuen MERGE Befehl zu verwenden.

Hat jemand eine Ahnung, ob dies schneller ist als ein SELECT gefolgt von einem INSERT oder UPDATE?

Nicht die Mühe wert. Möglicherweise machbar, aber es wird dir nichts merkwürdiges geben.

MERGE zielt besonders auf Data Warehouses, wo herauszufinden, was zu setzen / zu aktualisieren ist der knifflige Teil. Es erlaubt alle Operationen (Einfügen, Aktualisieren) mit einem Satz von Zusammenführungen durchgeführt werden, im Vergleich zu einem für jede Bedingung. Das macht keinen wirklichen Unterschied in Ihrem Fall.

Ich habe eine database, wo ich 3-5 Millionen Zeilen in eine 300 Millionen Zeilentabelle upload – da merge meine performance um 50% (ein Tabellenscan statt zwei).