In der Ausgabe werden die EXPLAIN-Informationen für jedes Paket in zwei Komponenten unterteilt:
Die Schritte eines Zugriffsplans oder Abschnitts werden in der Reihenfolge aufgeführt, in der sie vom Datenbankmanager ausgeführt werden. Jeder Hauptschritt wird als linksbündig ausgerichtete Überschrift angezeigt. Informationen zum Schritt werden darunter eingerückt angezeigt. In der linken Spalte der EXPLAIN-Ausgabe für den Zugriffsplan befinden sich Einrückungsbalken. Diese Balken zeigen auch den "Bereich" der Operation an. Operationen niedrigerer Einrückungsstufe innerhalb derselben Operation (d. h. solche, die weiter rechts angezeigt werden) werden verarbeitet, bevor zur vorherigen Einrückungsstufe zurückgekehrt wird.
Es ist zu beachten, daß der ausgewählte Zugriffsplan auf einer verbesserten Version der ursprünglichen SQL-Anweisung (der in der Ausgabe gezeigten) basiert. Beispielsweise kann die ursprüngliche Anweisung die Aktivierung einer beliebigen Anzahl von Auslösern und Einschränkungen bewirken. Die SQL-Anweisung kann nun von der Komponente zum Umschreiben von Abfragen des SQL-Compilers in ein gleichwertiges, aber effizienteres Format umgesetzt werden. Alle diese Faktoren sind in den Informationen enthalten, die an das Optimierungsprogramm weitergeleitet werden, wenn es den effizientesten Plan zum Ausführen der Anweisung ermittelt. Daher kann sich der in der EXPLAIN-Ausgabe angezeigte Zugriffsplan erheblich von dem unterscheiden, der für die ursprüngliche SQL-Anweisung vermutet werden könnte. Die integrierte EXPLAIN-Einrichtung zeigt die tatsächlich für die Optimierung verwendete SQL-Anweisung in Form einer Anweisung im SQL-Format an, die durch Rückübersetzung der internen Darstellung der Abfrage erstellt wird (eine Beschreibung der integrierten EXPLAIN-Einrichtung finden Sie in Kapitel 26, Die SQL-EXPLAIN-Einrichtung).
Beim Vergleichen der Ausgabe von db2expln oder dynexpln mit der Ausgabe der EXPLAIN-Einrichtung kann die Option (-i) für die Operator-ID sehr nützlich sein. Jedesmal, wenn db2expln bzw. dynexpln die Verarbeitung eines neuen Operators aus der EXPLAIN-Einrichtung beginnt, wird die Operator-ID links neben dem mit EXPLAIN bearbeiteten Plan ausgegeben. Die Operator-ID kann zum Abgleichen der Schritte in den verschiedenen Darstellungen des Zugriffsplans verwendet werden. Beachten Sie, daß es nicht immer eine Eins-zu-eins-Entsprechung gibt zwischen den Operatoren in der Ausgabe der EXPLAIN-Einrichtung und den Operationen, die in der Ausgabe von db2expln und dynexpln angezeigt werden.
Unter den folgenden Themen wird der EXPLAIN-Text beschrieben, der von db2expln und dynexpln generiert werden kann:
Diese Angabe zeigt den Namen und den Typ der Tabelle an, auf die zugegriffen wird. Es werden zwei Formate verwendet:
Access Table Name = schema.name ID = ts,nDabei gilt folgendes:
Access Hierarchy Table Name = schema.name ID = ts,nDabei gilt folgendes:
Access Summary Table Name = schema.name ID = ts,nDabei gilt folgendes:
Access Temp Table ID = tnDabei gilt folgendes:
Access Global Temp Table ID = ts,tnDabei gilt folgendes:
Nach der Angabe über den Zugriff auf die Tabelle folgen weitere Angaben, die den Zugriff weiter beschreiben. Diese Angaben werden unter der Angabe über den Zugriff auf die Tabelle eingerückt. Folgende Angaben sind möglich:
Die folgende Angabe zeigt die Anzahl von Spalten an, die aus jeder Zeile der Tabelle verwendet werden:
#Columns = n
Die folgende Angabe zeigt an, daß der Datenbankmanager mehrere Subagenten zum parallelen Lesen aus der Tabelle verwendet:
Parallel Scan
Wenn diese Angabe fehlt, wird die Tabelle nur von einem Agenten (bzw. Subagenten) gelesen.
Die folgende Angabe zeigt an, daß der Datenbankmanager Zeilen in umgekehrter Reihenfolge liest:
Scan Direction = Reverse
Wenn dieser Text nicht angezeigt wird, wird in Vorwärtsrichtung gesucht (dies ist der Standardwert).
Eine der folgenden Angaben zur Art und Weise des Zugriffs auf die Zeilen in der Tabelle, die den angegebenen Kriterien entsprechen, wird angezeigt:
Relation Scan | Prefetch: None
Relation Scan | Prefetch: n Pages
Relation Scan | Prefetch: Eligible
Index Scan: Name = schema.name ID = xx | Index Columns:
Dabei gilt folgendes:
Diesen Angaben folgen jeweils eine Zeile für jede Spalte im Index. Jede Spalte im Index wird in einer der folgenden Formen aufgeführt:
n: column_name (Ascending) n: column_name (Descending) n: column_name (Include Column)
Die folgenden Angaben präzisieren die Art der Indexsuche:
#Key Columns = n | Start Key: xxxxx | Stop Key: xxxxx
Dabei ist xxxxx eine der folgenden Angaben:
Ein inklusiver Schlüsselwert wird in die Indexsuche mit einbezogen. Ein exklusiver Schlüsselwert wird in der Suchoperation nicht berücksichtigt. Der Wert für den Schlüssel wird durch eine der folgenden Zeilen für jeden Teil des Schlüssels angegeben:
n: 'zeichenfolge' n: nnn n: jjjj-mm-tt n: ss:mm:ss n: jjjj-mm-tt ss:mm:ss.uuuuuu n: NULL n: ?
Wenn eine Literalzeichenfolge angezeigt wird, werden nur die ersten 20 Zeichen angegeben. Ist die Zeichenfolge länger als 20 Zeichen, wird dieses durch ... am Ende der Zeichenfolge angezeigt. Einige Schlüssel können erst bestimmt werden, wenn der Abschnitt (section) ausgeführt wird. Dies wird durch den Wert ? angezeigt.
Wenn alle benötigten Spalten aus dem Indexschlüssel abgerufen werden können, wird diese Angabe für reinen Indexzugriff angezeigt, und es wird nicht auf Tabellendaten zugegriffen.
Index Prefetch: None
Index Prefetch: Eligible
Data Prefetch: None
Data Prefetch: Eligible
Sargable Index Predicate(s) | #Predicates = n
Für jeden Tabellenzugriff wird die Art der Sperre, die auf Tabellen- und Zeilenebene aktiviert wird, mit der folgenden Angabe angezeigt:
Lock Intents | Table: xxxx | Row : xxxx
Folgende Werte sind für eine Tabellensperre möglich:
Folgende Werte sind für eine Zeilensperre möglich:
Eine Erläuterung dieser Arten von Sperren finden Sie in Attribute von Sperren.
Es gibt zwei Angaben, die Informationen über die in einem Zugriffsplan verwendeten Vergleichselemente enthalten:
Residual Predicate(s) | #Predicates = n
Sargable Predicate(s) | #Predicates = n
Die Anzahl der in den obigen Angaben gezeigten Vergleichselemente spiegelt möglicherweise die Anzahl der Vergleichselemente der SQL-Anweisung aus folgenden Gründen nicht genau wider:
Single Record
Isolation Level: xxxxEine andere Isolationsstufe kann aus einer Reihe von Gründen verwendet werden, zum Beispiel:
Keep Rows In Private Memory
Volatile Cardinality
Eine temporäre Tabelle wird von einem Zugriffsplan während dessen Ausführung zum Speichern von Daten in einer temporären Arbeitstabelle oder Übergangstabelle verwendet. Die Tabelle existiert nur, solange der Zugriffsplan ausgeführt wird. Allgemein werden temporäre Tabellen verwendet, wenn Unterabfragen frühzeitig im Zugriffsplan ausgewertet werden müssen oder wenn Zwischenergebnisse nicht in den vorhandenen Speicher passen.
Wenn eine temporäre Tabelle erstellt werden muß, kann eine von zwei möglichen Angaben angezeigt werden. Diese Angaben weisen darauf hin, daß eine temporäre Tabelle erstellt und Zeilen in sie eingefügt werden. Die ID ist eine Kennung, die aus praktischen Gründen von db2expln zugeordnet wird, wenn auf die temporäre Tabelle Bezug genommen wird. Dieser ID wird als Präfix der Buchstabe 't' vorangestellt, um anzuzeigen, daß es sich um eine temporäre Tabelle handelt.
Insert Into Temp Table ID = tn
Insert Into Shared Temp Table ID = tn
Insert Into Sorted Temp Table ID = tn
Insert Into Sorted Shared Temp Table ID = tn
Insert Into Global Temp Table ID = ts,tn
Insert Into Shared Global Temp Table ID = ts,tn
Insert Into Sorted Global Temp Table ID = ts,tn
Insert Into Sorted Shared Global Temp Table ID = ts,tn
Nach jeder der oben gezeigten Angaben folgt die Angabe:
#Columns = n
Diese Angabe zeigt die Anzahl der Spalten für jede Zeile, die in die temporäre Tabelle eingefügt wird.
Sortierte temporäre Tabellen treten z. B. als Ergebnis folgender Operationen auf:
Eine Reihe zusätzlicher Angaben kann auf die ursprüngliche Angabe über die Erstellung für eine sortierte temporäre Tabelle folgen:
#Sort Key Columns = n
Für jede Spalte im Sortierschlüssel wird eine der folgenden Zeilen angezeigt:
Key n: column_name (Ascending) Key n: column_name (Descending) Key n: (Ascending) Key n: (Descending)
Sortheap Allocation Parameters: | #Rows = n | Row Width = n
Sort Limited To Estimated Row Count
Use Partitioned Sort Use Shared Sort Use Replicated Sort Use Round-Robin Sort
Eine Beschreibung der verschiedenen Sortiertechniken finden Sie in Strategien für paralleles Sortieren.
Piped
und
Not Piped
Wenn eine über Pipe geleitete Sortierung angegeben wird, behält der Datenbankmanager die sortierte Ausgabe im Speicher, anstatt das sortierte Ergebnis in eine andere temporäre Tabelle zu schreiben. (Eine Beschreibung der über Pipe geleiteten und nicht über Pipe geleiteten Sortiervorgänge finden Sie in Einfluß des Sortierens auf das Optimierungsprogramm.)
Duplicate Elimination
Partial Aggregation Intermediate Aggregation Buffered Partial Aggregation Buffered Intermediate Aggregation
Nach einem Tabellenzugriff, der eine verschobene (Pushdown) Operation zum Erstellen einer temporären Tabelle enthält (d. h. eine Operation zum Erstellen einer temporären Tabelle, die im Rahmen eines Tabellenzugriffs auftritt), folgt eine Abschlußangabe ("Completion"), die das Dateiende verarbeitet, indem sie die temporäre Tabelle darauf vorbereitet, Zeilen für den nachfolgenden Zugriff auf die temporäre Tabelle zur Verfügung zu stellen. Es wird eine der folgenden Zeilen angezeigt:
Temp Table Completion ID = tn Shared Temp Table Completion ID = tn Sorted Temp Table Completion ID = tn Sorted Shared Temp Table Completion ID = tn
Tabellenfunktionen sind benutzerdefinierte Funktionen (UDFs), die Daten in Form einer Tabelle an die Anweisung zurückgeben. Im Handbuch SQL Reference finden Sie weitere Informationen zu Tabellenfunktionen. Tabellenfunktionen werden durch die folgende Angabe angezeigt:
Access User Defined Table Function | Name = schema.funcname | Language = xxxx | Fenced Deterministic NULL Call Disallow Parallel
Die Sprache (C, OLE oder Java), in der die Tabellenfunktion geschrieben ist, wird zusammen mit den Attributen der Tabellenfunktion angegeben.
Es gibt drei Arten von Verknüpfungen (eine Beschreibung dieser Verknüpfungen finden Sie in Verknüpfungskonzepte):
Wenn bei der Ausführung eines Abschnitts der Zeitpunkt kommt, zu dem eine Verknüpfung ausgeführt wird, wird eine der folgenden Angaben angezeigt:
Hash Join
oder
Merge Join
oder
Nested Loop Join
Es ist möglich, daß eine linke äußere Verknüpfung durchgeführt wird. Eine linke äußere Verknüpfung wird durch eine der folgenden Angaben angezeigt:
Left Outer Hash Join
oder
Left Outer Merge Join
oder
Left Outer Nested Loop Join
Bei Mischverknüpfungen und Verknüpfungen über Verschachtelungsschleife ist die äußere Tabelle der Verknüpfung die Tabelle, auf die in der vorherigen Zugriffsangabe, die in der Ausgabe angezeigt wird, verwiesen wird. Die innere Tabelle bei dieser Verknüpfung ist die Tabelle, auf die in der Zugriffsangabe verwiesen wird, die sich im Bereich der Verknüpfungsangabe befindet. Bei Hash-Verknüpfungen sind die Zugriffsangaben umgekehrt, d. h. die äußere Tabelle ist im Verknüpfungsbereich enthalten, und die innere Tabelle wird vor der Verknüpfung angezeigt.
Bei einer Hash- oder Mischverknüpfung können folgende weitere Angaben auftreten:
Early Out: Single Match Per Outer Row
Residual Predicate(s) | #Predicates = n
Bei einer Hash-Verknüpfung können folgende weitere Angaben auftreten:
Process Hash Table For Join
Process Probe Table For Hash Join
Estimated Build Size: n
Estimated Probe Size: n
Bei einer Verknüpfung über Verschachtelungsschleife kann die folgende zusätzliche Angabe direkt nach der Verknüpfungsangabe angezeigt werden:
Piped Inner
Diese Angabe bedeutet, daß die innere Tabelle der Verknüpfung das Ergebnis einer anderen Reihe von Operationen ist. Dies wird auch als eine zusammengesetzte innere (composite inner) Tabelle bezeichnet.
Wenn eine Verknüpfung mehr als zwei Tabellen umfaßt, müssen die EXPLAIN-Schritte von oben nach unten gelesen werden. Angenommen, die EXPLAIN-Ausgabe hat folgende Struktur:
Access ..... W Join | Access ..... X Join | Access ..... Y Join | Access ..... Z
Die Ausführung würde in diesem Fall in folgenden Schritten ablaufen:
In einem Zugriffsplan ist es oft erforderlich, die Erstellung und den Fluß von Daten von einer Reihe von Operationen zur anderen zu steuern. Das Konzept des Datenstroms erlaubt es, eine Gruppe von Operationen innerhalb eines Zugriffsplans als Einheit zu steuern. Der Beginn eines Datenstroms wird durch folgende Angabe gekennzeichnet:
Data Stream n
Hierbei ist n eine eindeutige Kennung, die zur leichteren Bezugnahme von db2expln zugeordnet wird. Das Ende des Datenstroms wird durch folgende Angabe gekennzeichnet:
End of Data Stream n
Alle Operationen zwischen diesen Angaben werden als Teil desselben Datenstroms angesehen.
Ein Datenstrom hat eine Anzahl von Merkmalen, und auf die einleitende Datenstromangabe können eine oder mehrere Angaben folgen, um diese Merkmale zu beschreiben:
Correlated
Pipedund
Not Piped
Wie bei temporären Tabellen kann ein über eine Pipe geleiteter Datenstrom auf die Platte geschrieben werden, wenn zur Ausführungszeit zu wenig Speicher vorhanden ist. Der Zugriffsplan sieht beide Möglichkeiten vor.
Single Record
Wenn auf einen Datenstrom zugegriffen wird, wird die folgende Angabe in der Ausgabe angezeigt:
Access Data Stream n
Der EXPLAIN-Text für diese SQL-Anweisungen ist selbsterklärend. Nachfolgend sind mögliche Texte für diese SQL-Operationen dargestellt:
Für einige Zugriffspläne ist es effizienter, wenn die den Kriterien entsprechenden Satz-IDs (RIDs) sortiert und mehrfach auftretende Werte entfernt werden (bei OR-Verknüpfung von Indizes) bzw. wenn eine Technik verwendet wird, mit der RIDs, die in allen betroffenen Indizes auftreten (bei AND-Verknüpfung von Indizes), identifiziert werden, bevor der tatsächliche Zugriff auf die Tabelle erfolgt. Es gibt drei Hauptgründe für die Vorbereitung von Satz-IDs, auf die in den EXPLAIN-Angaben hingewiesen wird:
Index ORing RID Preparation
Index ORing (OR-Verknüpfung von Indizes) bezeichnet ein Verfahren, bei dem mehrere Indexzugriffe vorgenommen und die Ergebnisse kombiniert werden, so daß die eindeutigen Satz-IDs, die mindestens in einem der Indizes auftreten, auf die zugegriffen wird, zusammengefaßt werden. Das Optimierungsprogramm erwägt die Verwendung dieses Verfahrens, wenn Vergleichselemente durch Schlüsselwörter OR verknüpft werden oder ein Vergleichselement IN existiert. Die Zugriffe können auf den gleichen Index oder auf verschiedene Indizes erfolgen.
List Prefetch RID Preparation
Index ANDing
Wenn das Optimierungsprogramm die Größe der Ergebnismenge abgeschätzt hat, wird der Schätzwert mit der folgenden Angabe angezeigt:
Optimizer Estimate of Set Size: n
Die Filteroperationen bei AND-Verknüpfungen von Indizes verarbeiten die Satz-IDs und verwenden Bit-Filtermethoden, um die Satz-IDs zu bestimmen, die in allen Indizes vorkommen, auf die zugegriffen wird. Die folgenden Angaben weisen darauf hin, daß Satz-IDs zur AND-Verknüpfung von Indizes verarbeitet werden:
Index ANDing Bitmap Build Index ANDing Bitmap Probe Index ANDing Bitmap Build and Probe
Wenn das Optimierungsprogramm die Größe der Ergebnismenge für eine Bit-Abgleichung (Bitmap) abgeschätzt hat, wird der Schätzwert mit der folgenden Angabe angezeigt:
Optimizer Estimate of Set Size: n
Bei jeder Art von Satz-ID-Vorbereitung wird die Möglichkeit, daß ein Vorablesezugriff über Listen erfolgen kann, mit folgender Angabe angezeigt:
Prefetch: Enabled
Spaltenberechnungen (Aggregation) werden für die Zeilen vorgenommen, die den etwaigen, in den Vergleichselementen der SQL-Anweisungen festgelegten Kriterien entsprechen. Wenn eine Art von Spaltenfunktion auszuführen ist, wird eine der folgenden Angaben angezeigt:
Aggregation Predicate Aggregation Partial Aggregation Partial Predicate Aggregation Intermediate Aggregation Intermediate Predicate Aggregation Final Aggregation Final Predicate Aggregation
Die Angabe Predicate aggregation besagt, daß die Spaltenberechnungsoperation zur Verarbeitung als Vergleichselement, wenn auf die Daten wirklich zugegriffen wird, verschoben wurde.
Unter jeder der oben aufgeführten Angaben über Spaltenberechnungen befindet sich eine Angabe, die die Art der durchgeführten Spaltenfunktion anzeigt:
Die spezifische Spaltenfunktion kann von der ursprünglichen SQL-Anweisung abgeleitet werden. Ein einzelner Satz (Single Record) wird aus einem Index abgerufen, um eine Operation MIN oder MAX auszuführen.
Wenn eine Spaltenberechnung über Vergleichselemente verwendet wird, folgt auf die Angabe über den Tabellenzugriff, in der die Spaltenberechnung auftrat, eine Angabe über den Abschluß der Spaltenberechnung, die alle erforderlichen Verarbeitungsschritte bei Gruppenende bzw. bei Dateiende vornimmt. Dazu wird eine der folgenden Zeilen in der Ausgabe angezeigt:
Aggregation Completion Partial Aggregation Completion Intermediate Aggregation Completion Final Aggregation Completion
Für die parallele Ausführung einer SQL-Anweisung (entweder mit partitionsinterner oder partitionsübergreifender Parallelität) sind einige besondere Operationen erforderlich. Die Operationen für Parallelpläne werden im folgenden beschrieben.
Process Using n Subagents
Die Verteilung von Teilbereichen wird durch folgende Angabe angezeigt:
Distribute Subsection #n
Die Knoten, die einen Teilbereich empfangen, können durch eine von acht Methoden bestimmt werden:
Directed by Hash | #Columns = n | Partition Map ID = n, Nodegroup = ngname, #Nodes = n
Directed by Node Number
Directed by Partition Number | Partition Map ID = n, Nodegroup = ngname, #Nodes = n
Directed by Position
Directed to Single Node | Node Number = n
Directed to Coordinator Node
Broadcast to Node List | Nodes = n1, n2, n3, ...
Directed to Any Node
Insert Into Synchronous Table Queue ID = qn Insert Into Asynchronous Table Queue ID = qn Insert Into Synchronous Local Table Queue ID = qn Insert Into Asynchronous Local Table Queue ID = qn
Broadcast to Coordinator NodeAlle Zeilen werden an den Koordinatorknoten gesendet.
Broadcast to All Nodes of Subsection nAlle Zeilen werden an jede Datenbankpartition gesendet, auf der der angegebene Teilbereich ausgeführt wird.
Hash to Specific NodeJede Zeile wird abhängig von den Werten in der Zeile an eine Datenbankpartition gesendet.
Send to Specific NodeJede Zeile wird an eine Datenbankpartition gesendet, die während der Ausführung der Anweisung bestimmt wird.
Send to Random NodeJede Zeile wird an eine zufällig bestimmte Datenbankpartition gesendet.
Rows Can Overflow to Temporary Table
Insert Into Synchronous Table Queue Completion ID = qn Insert Into Asynchronous Table Queue Completion ID = qn Insert Into Synchronous Local Table Queue Completion ID = qn Insert Into Asynchronous Local Table Queue Completion ID = qn
Access Table Queue ID = qn Access Local Table Queue ID = qnDiesen Nachrichten folgt stets eine Angabe der Anzahl der Zeilen, die abgerufen werden.
#Columns = n
Output Sorted Output Sorted and UniqueDiesen Nachrichten folgt eine Angabe der Anzahl der Schlüsselspalten, die für die Sortierung verwendet wurden.
#Key Columns = nFür jede Spalte im Sortierschlüssel wird eine der folgenden Angaben angezeigt:
Key n: (Ascending) Key n: (Descending)
Residual Predicate(s) | #Predicates = n
Jump Back to Start of Subsection
Für die Ausführung einer SQL-Anweisung in einer zusammengeschlossenen Datenbank ist die Fähigkeit erforderlich, Teile der betreffenden Anweisung in bezug auf andere Datenquellen auszuführen.
Im folgenden wird angegeben, daß auf eine Datenquelle zugegriffen wird:
Distributed Subquery #n | #Columns = n
Es ist möglich, daß Vergleichselemente auf die Daten angewandt werden, die von der verteilten Unterabfrage (Distributed Subquery) zurückgegeben wurden. Die Anzahl der Vergleichselemente (Predicates), die angewandt werden, wird folgendermaßen angezeigt:
Residual Predicate(s) | #Predicates = n
Die Einzelheiten für die verteilten Unterabfragen werden getrennt bereitgestellt. Die Optionen für verteilte Unterabfragen werden nachfolgend beschrieben:
Server: server_name (type, version) Server: server_name (type) Server: server_name
Subquery SQL Statement: statement
Nickname Referenced: Schema.nickname Base = baseschema.basetable
#Input Columns: n
#Output Columns: n
DDL StatementFür DDL-Anweisungen wird keine weitere EXPLAIN-Ausgabe bereitgestellt.
SET StatementFür SET-Anweisungen wird keine weitere EXPLAIN-Ausgabe bereitgestellt.
Distinct Filter #Columns = nDabei ist n die Anzahl von Spalten, die beim Abrufen eindeutiger Zeilen verwendet wird. Zum Abrufen eindeutiger Zeilenwerte müssen die Zeilen geordnet sein, so daß gleiche Werte übersprungen werden können. Diese Angabe wird nicht angezeigt, wenn der Datenbankmanager gleiche Werte nicht explizit entfernen muß wie in folgenden Fällen:
Positioned OperationDiese Angabe wird für jede SQL-Anweisung angezeigt, die die Syntax WHERE CURRENT OF verwendet.
Residual Predicate Application | #Predicates = n
UNION
Table Constructor | n-Row(s)Table Constructors können verwendet werden, um Werte in einer Menge in eine Reihe von Zeilen umzuwandeln, die anschließend an nachfolgende Operationen übergeben werden. Wenn die nächste Zeile von einem Table Constructor angefordert wird, wird die folgende Angabe angezeigt:
Access Table Constructor
Conditional Evaluation | Condition #n: | | #Predicates = n | Action #n:Durch bedingte Auswertung werden Aktivitäten wie die SQL-Anweisung CASE oder interne Mechanismen wie referentielle Integritätsbedingungen oder Auslöser implementiert. Wenn keine Aktion angezeigt wird, werden nur Datenbearbeitungsoperationen verarbeitet, wenn die Bedingung wahr ist.
Establish Row Position
Return Data to Application | #Columns = nWenn die Operation in einen Tabellenzugriff verschoben (Pushdown) wurde, wird eine Abschlußphase (Completion) erforderlich. Diese Phase wird wie folgt angezeigt:
Return Data Completion