DML-Wissen: Die OUTPUT-Funktion in SQL Server 2005

Mit der neuen OUTPUT-Klausel kann man die geänderten Daten in einer Tabelle oder Tabellenvariablen zur späteren Verwendung zwischenspeichern und muss so nicht auf die ursprüngliche Tabelle zugreifen.

Angenommen, eine Anwendung enthält eine Transaktion, die aus drei Anweisungen besteht, welche der Änderung von Kundendaten dienen. Die Datenbank und das Unternehmen, das diese unterhält, benötigen diese Anwendung, um Verkaufsdaten zu verarbeiten. Aufgrund reger Verkaufstätigkeit sinkt die Leistungsfähigkeit der Datenbankanwendung. Hier eine Verkaufstransaktion als Beispiel:

  1. Es erfolgen Verkäufe an fünf neue Kunden. Für jeden Kunden werden Kundendaten in die Tabelle Customers eingetragen.
  2. Die Provisionsbeträge für die Verkäufer, die den fünf Kunden etwas verkauft haben, werden aktualisiert.
  3. Dem Mitteilungssystem werden fünf neue Einträge hinsichtlich des Verfassens von Dankschreiben an diese Kunden hinzugefügt.

Die Vorgänge zwei und drei basieren auf den Daten, die im Rahmen von Vorgang eins eingegeben wurden. So kann man zum Beispiel den Verkäufern kein Geld für die aktuellen Verkäufe zukommen lassen, wenn man den Kunden, dem sie etwas Verkauft haben, nicht identifizieren kann.

Angenommen, das Verkaufsteam war in letzter Zeit sehr erfolgreich, die Tabelle Customers ist um 200 Prozent angewachsen und andere Unternehmensanwendungen greifen häufig darauf zu. Selbst wenn die Tabelle korrekt indexiert ist, möchte man sie nicht bei jeder Transaktion, welche die Anwendung erfordert, auslesen müssen.

Um ein unnötiges Auslesen der Datenbank zu umgehen, fügt man die betreffenden Einträge mittels der OUTPUT-Klausel einer Tabellenvariablen hinzu. In den Schritten zwei und drei werden die Tabellen dann mit dieser Tabellenvariable verbunden, anstatt mit der Tabelle Customers. Man kann mit dieser Technik unter Umständen sehr viel Pufferspeicher und Eingabe-Ausgabe-Vorgänge sparen.

Anmerkung: Microsoft empfiehlt die Verwendung von Tabellenvariablen bei großen Datensätzen nicht. Wenn also die eigene Anwendung mit der OUTPUT-Klausel große Mengen an Daten zwischenspeichert, sollte man stattdessen eine temporäre Tabelle verwenden. Temporäre Tabellen befinden sich in der Datenbank tempdb und können indexiert werden.

Themenseiten: Big Data, Datenbank, SQL, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu DML-Wissen: Die OUTPUT-Funktion in SQL Server 2005

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *