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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

3 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

3 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

4 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

4 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

4 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

4 Tagen ago