Anfang des Inhaltsbereichs

UPDATE STATISTICS-Anweisung (update_statistics_statement) 

Die UPDATE STATISTICS-Anweisung (update_statistics_statement) bestimmt den Platzbedarf von Tabellen und Indizes und die Werteverteilung von Spalten und legt die Informationen im Datenbankkatalog ab.

Syntax

<update_statistics_statement> ::=
  UPDATE STAT[ISTICS] COLUMN <table_name>.<column_name> [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] COLUMN (<column_name>,...) FOR <table_name> [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] COLUMN (*) FOR <table_name> [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] <table_name> [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] [<owner>.][<identifier>]* [ESTIMATE [<sample_definition>]]

table_name, column_name, sample_definition, owner, identifier

Erläuterung

Die Ausführung der UPDATE STATISTICS-Anweisung bewirkt, dass Informationen über die Tabelle wie die Anzahl der Zeilen, Anzahl belegter Seiten, Größe von Indizes, Werteverteilung innerhalb von Spalten oder Indizes usw. im Datenbankkatalog abgelegt werden. Diese Werte werden vom SQL-Optimierer zur Bestimmung der besten Strategie zur Ausführung von SQL-Anweisungen benutzt.

Die UPDATE STATISTICS-Anweisung führt implizit pro Basistabelle eine COMMIT-Anweisung aus, d. h. die Transaktion, in der die UPDATE STATISTICS-Anweisung ausgeführt wird, ist anschließend beendet.

Bei der Ausführung einer CREATE INDEX-Anweisung werden für diesen Index und für die Basistabelle, für die der Index definiert wird, die oben genannten Informationen im Datenbankkatalog abgelegt, nicht jedoch für andere, auf dieser Basistabelle definierte Indizes.

Die im Datenbankkatalog abgelegten Statistikwerte können durch Selektieren der Systemtabelle OPTIMIZERSTATISTICS abgefragt werden. Jede Zeile der Tabelle beschreibt Statistikwerte über Indizes, Spalten oder Größe einer Tabelle.

Eine Definition der Statistik-Systemtabellen finden Sie im Handbuch Systemtabellen, Abschnitt Definition der Systemtabellen.

<table_name>

Wenn ein Tabellenname angegeben ist, dann muss die Tabelle eine nicht temporäre Basistabelle sein und der aktuelle Benutzer muss ein Privileg für sie besitzen.

<column_name>

Wenn ein Spaltenname angegeben ist, dann muss die Spalte der angegebenen Tabelle existieren.

Wenn * angegeben ist, werden alle Spalten der Tabelle angenommen.

<identifier>*

Wenn <identifier>* angegeben ist, dann hat das den gleichen Effekt wie die Angabe der UPDATE STATISTICS-Anweisung für alle Basistabellen, für die der aktuelle Benutzer ein Privileg besitzt und deren Tabellenname mit dem Bezeichner (identifier) beginnt.

UPDATE STATISTICS *

Der Datenbanksystemadministrator (SYSDBA-Benutzer) kann durch UPDATE STATISTICS * erreichen, dass die UPDATE STATISTICS-Anweisung für alle Basistabellen ausgeführt wird, auch wenn dem SYSDBA kein Privileg für die Tabelle vergeben wurde.

ESTIMATE

·       Bei Angabe von ESTIMATE und einer sample_definition schätzt das Datenbanksystem die Statistikwerte durch Auswahl von Stichproben aus dem Datenbestand. Die Anzahl der Stichproben kann in Anzahl Zeilen oder in Prozent erfolgen. Ab einer Angabe von 50% werden alle Zeilen analysiert. Durch die Angabe von ESTIMATE kann die Laufzeit der UPDATE STATISTICS-Anweisung stark reduziert werden. Die Genauigkeit der ermittelten Statistikwerte ist in den meisten Fällen dennoch ausreichend.

·       Bei Angabe von ESTIMATE ohne eine sample_definition schätzt das Datenbanksystem die Statistikwerte durch Auswahl von Stichproben aus dem Datenbestand. Die Anzahl der Stichproben wurde bei der CREATE TABLE-Anweisung oder einer ALTER TABLE-Anweisung durch eine sample_definition für die angegebene Tabelle festgelegt. Ab einer Angabe von 50% werden alle Zeilen analysiert. Durch die Angabe von ESTIMATE kann die Laufzeit der UPDATE STATISTICS-Anweisung stark reduziert werden. Die Genauigkeit der ermittelten Statistikwerte ist in den meisten Fällen dennoch ausreichend.

·       Wenn ESTIMATE nicht angegeben ist, bestimmt das Datenbanksystem exakte Statistikwerte, indem der gesamte Datenbestand der Tabelle betrachtet wird. Bei großen Tabellen kann die Laufzeit hierfür beträchtlich sein.

Ende des Inhaltsbereichs