Eine Übersichtstabelle ist eine Tabelle, deren Definition auf einem Abfrageergebnis basiert. So gesehen enthält die Übersichtstabelle in der Regel zuvor berechnete Ergebnisse von Daten, die in der bzw. den Tabelle(n) vorhanden sind, auf denen die Definition der Übersichtstabelle basiert. Wenn der SQL-Compiler feststellt, daß eine Abfrage auf eine Übersichtstabelle effektiver ausgeführt werden kann als auf die Basistabelle, wird die Abfrage auf die Übersichtstabelle ausgeführt, und das Ergebnis wird schneller ausgegeben als sonst.
Die Erstellung einer Übersichtstabelle mit der Replikationsoption kann verwendet werden, um Tabellen auf allen Knoten in einer partitionierten Datenbankumgebung zu replizieren. Sie werden als "replizierte Übersichtstabellen" bezeichnet. Weitere Informationen finden Sie in Replizierte Übersichtstabellen.
Anmerkung: | Übersichtstabellen werden nicht mit statischem SQL oder mit Kurznamen verwendet. |
In der Regel wird eine Übersichtstabelle oder replizierte Übersichtstabelle zum Optimieren einer Abfrage verwendet, wenn die Isolationsstufe der Übersichtstabelle oder replizierten Übersichtstabelle größer oder gleich der Isolationsstufe der Abfrage ist. Wird eine Abfrage beispielsweise unter der Isolationsstufe für Cursorstabilität (CS) ausgeführt, werden für die Optimierung nur Übersichtstabellen und replizierte Übersichtstabellen verwendet, die unter CS oder einer höheren Isolationsstufe definiert wurden.
Sie können eine Übersichtstabelle mit Hilfe der Anweisung CREATE SUMMARY TABLE unter Angabe der Klausel AS voll-select und der Option IMMEDIATE oder REFRESH DEFERRED erstellen.
Sie haben die Möglichkeit, die Namen der Spalten in der Übersichtstabelle eindeutig zu identifizieren. Die Liste der Spaltennamen muß für jede Spalte der Ergebnistabelle in der vollständigen Auswahl einen Namen enthalten. Eine Liste der Spaltennamen muß angegeben werden, wenn die Ergebnistabelle für die Gesamtauswahl über doppelte Spaltennamen oder Spalten ohne Benennung verfügt. Eine nicht benannte Spalte wird von einer Konstanten, einer Funktion, einem Ausdruck oder einer definierten Operation abgeleitet, die nicht mit Hilfe der Klausel AS der SELECT-Liste benannt wurde. Wurde keine Liste mit Spaltennamen angegeben, übernehmen die Spalten der Tabelle die Namen der Spalten der Ergebnismenge der Gesamtauswahl.
Beim Erstellen der Übersichtstabelle können Sie angeben, ob die Tabelle bei Änderungen an der Basistabelle automatisch aktualisiert wird, oder ob sie mit Hilfe der Anweisung REFRESH TABLE aktualisiert wird. Geben Sie das Schlüsselwort REFRESH IMMEDIATE an, damit die Übersichtstabelle automatisch aktualisiert wird, wenn Änderungen an der Basistabelle bzw. den Basistabellen vorgenommen werden. Die sofortige Aktualisierung ist in folgenden Fällen sinnvoll:
In diesem Fall kann die Übersichtstabelle vorausberechnete Ergebnisse zur Verfügung stellen. Wenn die Aktualisierung der Übersichtstabelle verzögert erfolgen soll, geben Sie das Schlüsselwort REFRESH DEFERRED an. Mit REFRESH DEFERRED angegebene Übersichtstabellen spiegeln Änderungen an den zugrundeliegenden Basistabellen nicht wider. Sie sollten Übersichtstabellen verwenden, wo dies keine Voraussetzung ist. Wenn Sie zum Beispiel DSS-Abfragen ausführen, würden Sie mit Hilfe der Übersichtstabelle übernommene Daten abrufen.
Eine mit REFRESH DEFERRED definierte Übersichtstabelle kann anstelle einer Abfrage verwendet werden, wenn folgendes zutrifft:
Das SQL-Sonderregister CURRENT REFRESH AGE SQL ist auf ANY eingestellt oder hat den Wert 99999999999999. Die Sammlung von Neunen ist der zulässige Maximalwert in diesem Sonderregister, der ein Zeitmarkendifferenzwert mit dem Datentyp DECIMAL(20,6) ist.
Anmerkung: | Mit REFRESH DEFERRED definierte Übersichtstabellen werden nicht zum Optimieren von statischem SQL verwendet. |
Mit dem Sonderregister CURRENT REFRESH AGE können Sie die Zeitspanne angeben, die für die Übersichtstabelle mit verzögerter Neuanzeige für eine dynamische Abfrage verwendet werden kann, bevor sie aktualisiert werden muß. Sie können den Wert für das Sonderregister CURRENT REFRESH AGE mit Hilfe der Anweisung SET CURRENT REFRESH AGE einstellen. Weitere Informationen zum Sonderregister CURRENT REFRESH AGE und zur Anweisung SET CURRENT REFRESH AGE finden Sie im Handbuch SQL Reference.
Mit REFRESH IMMEDIATE definierte Übersichtstabellen gelten für statische und dynamische Abfragen und kommen ohne das Sonderregister CURRENT REFRESH AGE aus.
Anmerkung: | Sie sollten beim Einstellen des Sonderregisters CURRENT REFRESH AGE auf einen anderen Wert als Null Vorsicht walten lassen. Wenn Sie zulassen, daß eine Übersichtstabelle, die die Werte der zugrundeliegenden Basistabelle eventuell nicht repräsentiert, zur Optimierung der Abfrageverarbeitung verwendet wird, gibt das Abfrageergebnis die Daten in der zugrundeliegenden Tabelle eventuell nicht korrekt wieder. Dies ist eventuell akzeptabel, wenn Sie wissen, daß die zugrundeliegenden Daten nicht geändert wurden oder wenn Sie die Fehlerquote in den Ergebnissen auf Grundlage Ihrer Kenntnis der Daten akzeptieren. |
Da die Quellendaten durch bestimmte Vorgänge geändert werden, enthält eine Übersichtstabelle im Laufe der Zeit veraltete (inkorrekte) Daten. Sie müssen zur Aktualisierung die Anweisung REFRESH TABLE verwenden. Weitere Informationen finden Sie im Handbuch SQL Reference.
Wenn Sie eine neue Basistabelle erstellen wollen, die auf einer ungültigen Gesamtauswahl (voll-select) fußt, geben Sie das Schlüsselwort DEFINITION ONLY beim Erstellen der Tabelle an. Wenn die Operation zur Tabellenerstellung beendet ist, wird die neue Tabelle nicht als Übersichtstabelle behandelt, sondern als Basistabelle. Sie können zum Beispiel die in LOAD und SET INTEGRITY verwendeten Ausnahmetabellen wie folgt erstellen:
CREATE TABLE XT AS (SELECT T.*, CURRENT TIMESTAMP AS TIMESTAMP,CLOB(",32K) AS MSG FROM T) DEFINITION ONLY
Es folgt eine Auflistung einiger der wichtigsten Einschränkungen für Übersichtstabellen:
Eine vollständige Abhandlung der Einschränkungen für Übersichtstabellen finden Sie im Handbuch SQL Reference.