Das Datenbanksystem versucht SQL-Anweisungen so umzuformen, dass die resultierende Anweisung semantisch identisch, jedoch schneller abzuarbeiten ist. Die Umformungen erfolgen rein regelbasiert und berücksichtigen keine Statistikinformationen. Hauptziel der Umformungen ist es, Zwischenergebnismengen zu vermeiden.
Die aus den Umformungen resultierende Anweisung kann unter Umständen nicht mehr als syntaktisch korrekte SQL-Anweisung dargestellt werden.
Nach dem Umformen einer SQL-Anweisung bestimmt der SQL-Optimierer für die resultierende Anweisung die kostengünstigste Suchstrategie, um auf die Daten zugreifen zu können.
Siehe auch:
Das Datenbanksystem kann folgende Typen von SQL-Anweisungen umformen:
● SELECT
● CREATE CURSOR FOR SELECT
● EXPLAIN SELECT
Das automatische Umformen von SQL-Anweisungen konfigurieren Sie mit dem speziellen Datenbankparameter OPTIMIZE_QUERYREWRITE.
Wenn das Datenbanksystem eine SQL-Anweisung umgeformt hat, dann enthält das Ergebnis der EXPLAIN-Anweisung eine der folgenden Informationen:
● QUERY REWRITTEN ON SQLSTATEMENT LEVEL
● QUERY REWRITTEN ON OPERATOR LEVEL
Das Datenbanksystem formt folgende SQL-Anweisung um:
SELECT * FROM v WHERE a=1, wobei v als CREATE VIEW v (a) as SELECT b FROM t1 UNION ALL SELECT c FROM t2 definiert ist.
Das Ergebnis der ersten Umformung ist eine Anweisung, die eine kleinere Zwischenergebnismenge hat:
select b as a from (select b from t1 where b=1 union all select c from t2 where c=1)
Nach einer weiteren Umformung enthält die resultierende Anweisung kein äußeres SELECT mehr:
select b from t1 where b=1 union all select c from t2 where c=1
Siehe auch: