Databases Reference
In-Depth Information
Auch wenn es uns vielleicht nicht ganz bewusst ist: Wir haben mit Hilfe der Re-
lationenalgebra einfache Umformungen durchgeführt und außerdem die statisti-
sche Verteilung der Reihen in reihen berücksichtigt. Genauso verfährt der Opti-
mierer, eine Komponente des RDBMS. Der Optimierer
wertet statistische Informationen über den Datenbestand aus und
führt mit Hilfe der Relationenalgebra Umformungen der SQL-Anweisung
durch.
Das Ziel des Optimierers ist es dabei, einen möglichst schnellen und den ver-
fügbaren Ressourcen angemessenen Weg zur Ausführung der SQL-Anweisung
zu finden. Dieser Weg wird auch Abfrageplan genannt. Auch wenn die grund-
sätzliche Vorgehensweise eines Optimierers bekannt ist, wird ein erheblicher Teil
der Funktionsweise von den Herstellern kommerzieller Datenbanksoftware nicht
publiziert. Vielfach kann man dem Optimierer aber bei der Arbeit zuschauen,
und H2 ist da keine Ausnahme. Nach einigen Vorbereitungen werden wir wie-
der selbst Versuche durchführen.
Wir legen in unserer Tabelle konten (siehe Abschnitt 20.5) eine neue Spalte an:
alter table konten add column zaehler int;
Der Spalte zaehler weisen wir die gleichen Werte wie dem Primärschlüssel zu:
update konten set zaehler = id
Wenn wir einige Millionen Datensätze in die Tabelle eingefügt haben, kann eine
Anweisung wie
select * from konten where zaehler=4711
schon ein paar Sekunden dauern.
Den Grund dafür erfahren wir, wenn wir uns den Abfrageplan, der ein Teilergeb-
nis der Untersuchungen des Optimierers ist, anschauen. In H2 erhalten wir einen
sehr rudimentären Plan, wenn wir der select -Anweisung einfach das Schlüssel-
wort explain analyze voranstellen. Wenn unsere Tabelle 1.048.577 Datensätze
enthält, dann sieht das Ergebnis der Anweisung
explain analyze
select *
from konten
where zaehler=4711
wie folgt aus:
select
konten.id,
konten.saldo,
konten.zaehler
 
Search WWH ::




Custom Search