SQL Server 2008: Schnelle Datenbankaktualisierung mit MERGE

In den bisherigen Versionen von SQL Server muss man separate Anweisungen erzeugen, wenn in einer Tabelle, abhängig von den Bedingungen in einer anderen Tabelle, Daten eingefügt, aktualisiert oder gelöscht werden sollen. Mit MERGE lässt sich die Logik für diese Datenmanipulationen in einer einzigen Anweisung unterbringen.

Wie funktioniert MERGE?

Der MERGE-Befehl funktioniert im Grunde wie separate Insert-, Update- und Delete-Anweisungen in einem einzigen Befehl. Man gibt einen Quelldatensatz (Source) und eine Zieltabelle (Target) sowie die Join-Bedingung zwischen beiden an. Dann wird die Art der Datenmanipulation deklariert, die bei erfüllter oder nicht erfüllter Übereinstimmung (Match) zwischen den beiden Datensätzen ablaufen soll. MERGE ist besonders nützlich, wenn es darum geht, Datenlagertabellen zu laden, die sehr groß sind und je nach Zeilenzahl bestimmte Aktionen erfordern.

Ein einfaches Beispiel

Folgendes Beispiel simuliert Eingaben zu Verkäufen. Sie werden in eine Datenbank aufgenommen und dann in eine Berichtstabelle geladen, die die täglichen Verkaufsstatistiken aufzeichnet.

In einem klassischen Szenario würden die Datensätze zuerst in eine Staging-Tabelle (hier: Sales-Feed) geladen. Anschließend würde eine Reihe von Transformationen oder DDL-Anweisungen an der Berichtstabelle (hier: Sales-Archive) ausgeführt, um die täglichen Verkaufsdaten zu aktualisieren.

Mit der MERGE-Anweisung kann die Sales-Archive-Tabelle mittels einer einzigen Anweisung aktualisiert werden, anstatt verschiedene DDL-Anweisungen benutzen zu müssen. Da nur eine anstelle mehrerer Lookup-Operationen durchgeführt wird, lässt sich die Zeit verkürzen, die für die Aktualisierung notwendig ist.

Das folgende Script erzeugt die Tabellen Sales-Archive und Sales-Feed:

Mit dem nächsten Listing werden einige Daten in die Tabelle Sales-Feed geladen. Die Art, in der hier die Daten in die Tabelle eingefügt werden, ist neu in SQL Server 2008. Auf diese Weise lassen sich viele Werte spezifizieren, die dann über die VALUES-Klausel der INSERT-Anweisung eingefügt werden.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Google: Passkeys schützen mehr als 400 Millionen Google-Konten

Die Passwort-Alternative Passkeys überholt Einmalpasswörter bei der Zwei-Faktor-Authentifizierung. Auch Microsoft setzt sich aktiv für die…

4 Stunden ago

Infostealer: 53 Prozent der Angriffe treffen Unternehmensrechner

Der Anteil steigt seit 2020 um 34 Prozentpunkte. Allein 2023 erfasst Kaspersky rund 10 Millionen…

5 Stunden ago

Salesforce: Mit Einstein GPT zurück auf die Überholspur?

Salesforce forciert den Ausbau seiner Industry Clouds. Mit ihrem Prozesswissen könnten deutsche IT-Dienstleister davon profitieren.

1 Tag ago

Neue Backdoor: Bedrohung durch Malvertising-Kampagne mit MadMxShell

Bisher unbekannter Bedrohungsakteur versucht über gefälschte IP Scanner Software-Domänen Zugriff auf IT-Umgebungen zu erlangen.

2 Tagen ago

BSI-Studie: Wie KI die Bedrohungslandschaft verändert

Der Bericht zeigt bereits nutzbare Angriffsanwendungen und bewertet die Risiken, die davon ausgehen.

3 Tagen ago

KI-Wandel: Welche Berufe sich am stärksten verändern

Deutsche sehen Finanzwesen und IT im Zentrum der KI-Transformation. Justiz und Militär hingegen werden deutlich…

3 Tagen ago