Kapitel 11 Dr. Brigitte Mathiak Anfragebearbeitung Lernziele • Relationenalgebra • Ablauf der Anfrageoptimierung • Logische Optimierung • Umwandlung von SQL in Relationenalgebra • Heuristische Optimierung • Physische Optimierung • Unterschiedliche JOIN Algorithmen • Kostenbasierte Optimierung Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 2 Optimierung von Datenbank- Anfragen: Grundsätze Sehr hohes Abstraktionsniveau der mengenorientierten Schnittstelle (SQL). Sie ist deklarativ, nicht-prozedural, d.h. es wird spezifiziert, was man finden möchte, aber nicht wie. Das wie bestimmt sich aus der Abbildung der mengenorientierten Operatoren auf Schnittstellen-Operatoren der internen Ebene (Zugriff auf Datensätze in Dateien, Einfügen/Entfernen interner Datensätze, Modifizieren interner Datensätze). Zu einem was kann es zahlreiche wie‘s geben: effiziente Anfrageauswertung durch Anfrageoptimierung. i.A. wird aber nicht die optimale Auswertungsstrategie gesucht (bzw. gefunden) sondern eine einigermaßen effiziente Variante Ziel: „avoiding the worst case“ Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 3 Ablauf der Anfrageoptimierung Deklarative Anfrage Scanner Parser Sichtenauflösung Algebraischer Ausdruck AnfrageOptimierer AuswertungsPlan (QEP) Codeerzeugung Ausführung Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 4 Relationenmodell revisited: Grundbegriffe DB: Relationen (tables) Professoren Pers Nr Name Ran g Rau m 2125 Sokrates C4 226 2126 Russel C4 232 2127 Kopernik us C3 310 2133 Popper C3 52 2134 Augustin us C3 309 2136 Curie C4 36 2137 Kant C4 prüfen 7 Ausprägung dom (PersNr) dom (Name) ... dom (Raum) Schema Matr Nr VorlNr Pers Nr Note 28106 5001 2126 1 25403 5041 2125 2 Attribut (Column) Tupel (Record, Row) Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 5 Relationenmodell revisited: Definitionen Gegeben sei eine Menge von Wertebereichen primitiver Datentypen {D1, ..., Dm}, die als "Domains" bezeichnet werden. Eine Relation R ist ein Paar R = (s,v) mit • einem Schema s = sch(R) = {A1, ..., An}, das aus einer Menge von Attributen (Attributnamen) besteht und für jedes Attribut Ai einen Domain dom(Ai) {D1, ..., Dm} festlegt, und • einer Ausprägung v = val(R) dom(A1) dom(A2) ... dom(An). Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 6 Relationenalgebra (RA): Operationen Eine Operation der RA hat eine oder mehrere Relationen als Operanden und liefert eine Relation als Ergebnis (Abgeschlossenheit der Algebra) Operationen in RA: Mengenoperationen (Vereinigung, Durchschnitt, …) Zuweisung / Umbenennung Selektion, Projektion Joins Division Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 7 Mengenoperationen Für zwei Relationen R, S mit sch(R) = sch(S) sind die üblichen Mengenoperationen definiert: • Vereinigung (Union) R S: • Durchschnitt (Intersection) R S: • Differenz (Difference) R S: Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 8 Zuweisung Idee: Umbenennung von Relationen und/oder einzelnen Attributen Seien R, S Relationen mit sch(R) = { A1, ..., An } und sch(S) = { B1, ..., Bn }, so dass für alle i gilt: dom(Ai) = dom(Bi). Die Zuweisung R := S bedeutet: val(R) = val(S). Ausführlicher schreibt man auch R(A1, ..., An) := S(B1, ..., Bn). Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 9 Umbenennung Vereinfachte Form der Zuweisung: explizite Umbenennung von einzelnen Attributen oder Relationen • Umbennung von einzelnen Attributen [Voraussetzung Vorgänger] (voraussetzen) (.. Attribut "Vorgänger" wird in "Voraussetzung" umbenannt) • Umbenennung von Relationen [V1] (voraussetzen) (.. Relation "voraussetzen" wird in "V1" umbenannt) Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 10 Selektion Selektion (Filterung, Auswahl von Zeilen einer Tabelle): Das Resultat einer Selektion [F](R) auf einer Relation R ist: Die Menge der möglichen Filterformeln F ist: 1) Für Attribute A, B aus sch(R) mit dom(A) = dom(B), Konstante c dom(A) und Vergleichsoperationen {=, , , , , } sind A B und A c zulässige Filterbedingungen. 2) Falls F1 und F2 zulässige Filterbedingungen sind, dann sind auch F1 F2, F1 F2, F1 und (F1) zulässig. 3) Nur die von 1) und 2) erzeugten Filterbedingungen sind zulässig. Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 11 Projektion Projektion (Auswahl von Spalten einer Tabelle): Sei A sch(R). Das Resultat einer Projektion [A](R) ist: Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 12 Selektion vs. Projektion Projektion Selektion Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 13 Selektion / Projektion: Beispiel Studenten Selektion: [Semester > 10] (Studenten) MatrNr 24002 25403 Name Xenokrates Jonas Semester 18 12 Projektion: [Rang] (Professoren) Rang C3 C4 Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra MatrNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 26120 Fichte 10 26830 Aristoxenos 8 27550 Schopenhauer 6 28106 3 Carnap 29120 Theophrastos 2 29555 2 Feuerbach Professoren PersNr Name 2125 Sokrates C4 226 2126 Russel C4 232 2127 Kopernikus C3 310 2133 C3 52 2134 Augustinus C3 309 2136 Curie C4 36 2137 Kant C4 7 Popper Rang Raum 14 Beispiel: Selektion/Projektion mit Umbenennung Professoren Anfrage: PersNr Name 2125 Sokrates C4 2126 Russel Vorlesungen Rang Raum SWS gelesenVon VorlNr Titel 226 5001 Grundzüge 4 2137 C4 232 5041 Ethik 4 2125 2127 Kopernikus C3 310 5043 Erkenntnistheorie 3 2126 2133 C3 52 5049 Mäeutik 2 2125 2134 Augustinus C3 309 4052 Logik 4 2125 2136 Curie C4 36 5052 Wissenschaftstheorie 3 2126 2137 Kant C4 7 5216 Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 4630 Die 3 Kritiken 4 2137 Popper PersNr aller C4-Professoren, die mindestens eine Vorlesung halten. Mengendurchschnitt nur auf zwei Argumentrelationen mit gleichem Schema anwendbar. Deshalb ist die Umbenennung des Attributes gelesenVon in PersNr in der Relation Vorlesungen notwendig. Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 15 Natural Join Natural Join: || Natürlicher Verbund von Relationen über gleiche Attributnamen und Attributwerte. Das Resultat von R || S mit A = sch(R) und B = sch(S) ist: P (X1, ..., Xm, Y1, ..., Yk) Q (Y1,..., Yk, Z1, ..., Zn) P |×| Q X1 PQ X2 ... Xm Y1 PQ Y2 ... Yk Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra Z1 QP Z2 ... Zn 16 Natural Join: Beispiel Studenten hören MatrNr Name Semester MatrNr VorlNr 24002 Xenokrates 18 24002 5001 25403 Jonas 12 25403 5001 26120 Fichte 2 24002 4052 26830 Aristoxenos 8 24002 5041 1 26830 5052 27550 Schopenhauer || MatrNr Name Semester VorlNr 24002 Xenokrates 18 5001 24002 Xenokrates 18 4052 24002 Xenokrates 18 5041 25403 Jonas 12 5001 26830 Aristoxenos 8 5052 Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 17 Kartesisches Produkt Kartesisches Produkt: Seien R, S Relationen mit Schemata A = sch(R) und B = sch(S). Sei A' ein Schema, bei dem alle Ai, die auch in B vorkommen, unbenannt sind in R.Ai, und sei B' ein analoges Schema mit Attributnamen S.Ai. Das Resultat von R S ist: P (X1,..., Xm, Y1,..., Yk) Q (Y1,..., Yk, Z1,..., Zn) P×Q X1 X2 ... Xm P.Y P.Y 1 2 … P.Y k Q. Y1 Q. Y2 Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra … Q. Yk Z1 Z2 ... Zn 18 Kartesisches Produkt: Beispiel Professoren PersNr Name 2125 Sokrates C4 2126 Russel hören Rang Raum MatrNr VorlNr 226 26120 5001 C4 232 27550 5001 2127 Kopernikus C3 310 27550 4052 2133 C3 52 28106 5041 2134 Augustinus C3 309 28106 5052 2136 Curie C4 36 28106 5216 2137 Kant C4 7 ... ... Popper × sch(Professoren) PersNr 2125 ... 2125 ... 2137 Name Sokrates ... Sokrates ... Kant sch(hören) Rang C4 ... C4 ... C4 Raum 226 ... 226 ... 7 MatrNr 26120 ... 29555 ... 29555 VorlNr 5001 ... 5001 ... 5001 Problem: potentiell riesige Zwischenergebnisse Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 19 Äquivalenzregeln ("Rechenregeln") der RA Kommutativitätsregeln: 1) 2) falls P nur R1-Attribute enthält Assoziativitätsregel: 3) Idempotenzregeln: 4) 5) Distributivitätsregeln: 6) 7) 8) 9) 10) falls P nur R-Attribute enthält falls Joinattribute R1 S1 Invertierungsregel: 11) Grundlagen der Datenbanken, WS 08/09 Kapitel 5: Relationale Algebra 20 Ausdrucksmächtigkeit der RA Die Menge der relationenalgebraischen Ausdrücke über einer Menge von Relationen P1, ..., Pn ist wie folgt definiert: (i) P1, ..., Pn sind Ausdrücke. (ii) Wenn R, S, T, Q Ausdrücke sind, F eine Filterformel über sch(P) ist, A sch(R), sch(S)=sch(T) und sch(R) sch(Q) gilt, dann sind [F](R), [A](R), R |×| S, R × S, R |*| S, S T, S T, S - T, R Q auch Ausdrücke. (iii) Nur die von (i) und (ii) erzeugten Ausdrücke sind RA-Ausdrücke. Satz: , , , , –, bilden eine minimale Menge von Operationen, mit denen sich alle Operationen der RA ausdrücken lassen. Eine Anfragesprache heißt relational vollständig, wenn sich damit alle Anfragen der (minimalen) Relationenalgebra ausdrücken lassen. Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 21 Eigenschaften der Relationenalgebra (1/2) Satz: Alle Ergebnismengen von Operationen der relationalen Algebra sind endlich. Beweisskizze: Man zeige für alle Operationen ×, , , , – und , dass für endliche Eingaberelationen und beliebige Filterformeln das Ergebnis auch endlich ist. Beispiel: R × S: Sei die Anzahl der Tupel in R: r = |val(R)| und in S: s=|val(S)|. Dann ist sowohl r als auch s endlich (s. oben). Die Anzahl der Tupel in R × S: rxs = |val(R × S)| kann bestimmt werden als rxs ≤ r*s, da für jedes Element in val(R) höchstens s Ausprägungen in R × S entstehen können. rxs ist also endlich. □ Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 22 Eigenschaften der Relationenalgebra (2/2) • Mit ähnlichem Beweisschema gilt auch: • Die Größe der Ergebnismenge von Operationen der relationalen Algebra kann sicher nach oben abgeschätzt werden, wenn die Größe der Eingaberelationen bekannt ist • Die Laufzeit zur Auswertung eines Ausdrucks der Relationenalgebra kann sicher nach oben abgeschätzt werden, wenn sowohl die Größe der Eingaberelationen bekannt ist als auch die nach oben abgeschätzte Laufzeit des Berechnungsalgorithmen der eingesetzten Einzeloperationen Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 23 Offene Fragen: • Kann SQL die Relationenalgebra abbilden? • JA, SQL ist relational vollständig • Kann die Relationenalgebra SQL abbilden? • • • JEIN Es kommt auf den Dialekt an. Was bei den meisten fehlt sind • • • • • Multimengen, Aggregationen, Gruppierung und transitive Hülle Diese können allerdings mit geringem Zusatzaufwand eingefügt werden Grundlagen der Datenbanken, WS 10/11 Kapitel 5: Relationale Algebra 24 Logische Optimierung 1. Übersetzen der SQL-Anfrage in die Relationenalgebra 2. Äquivalentes Umformen der RA um die Anfragebearbeitung zu beschleunigen Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 25 Allgemeingültige Übersetzung SELECT A1, ..., An FROM R1, ..., Rk WHERE P Rk R3 R1 Datenbanken für Mathematiker, WS 11/12 R2 Kapitel 11: Anfragebearbeitung 26 Allgemeingültige Übersetzung (Beispiel) SELECT Titel FROM Professoren, Vorlesungen WHERE Name = ´Popper´ AND PersNr = gelesenVon Professoren Vorlesungen Problem: Professoren Vorlesung hat ist ein sehr großes Zwischenergebnise Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 27 Erste Optimierungsidee SELECT Titel FROM Professoren, Vorlesungen WHERE Name = ´Popper´ AND PersNr = gelesenVon Vorlesungen Professoren Das Zwischenergebnis ist nun deutlich kleiner. Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 28 Zur Erinnerung: Äquivalenzregeln der RA Kommutativitätsregeln: 1) 2) falls P nur R1-Attribute enthält Assoziativitätsregel: 3) Idempotenzregeln: 4) 5) Distributivitätsregeln: 6) 7) 8) 9) 10) falls P nur R-Attribute enthält falls Joinattribute R1 S1 Invertierungsregel: 11) Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 29 Heuristische Anwendung der Transformationsregeln 1. Mittels Regel 1 werden konjunktive Selektionsprädikate in Kaskaden von -Operationen zerlegt. Selektion nach unten 2. Mittels Regeln 2, 4, 6, und 9 werden Selektionsoperationen soweit "nach unten" propagiert wie möglich. 3. Mittels Regel 8 werden die Blattknoten so vertauscht, dass Kleine Zwischenergebnisse derjenige, der das kleinste Zwischenergebnis liefert, zuerst ausgewertet wird. Join als Kartesisch 4. Forme eine -Operation, die von Besser einer -Operation gefolgt wird, wenn möglich in eine Join-Operation um 5. Mittels Regeln 3, 4, 7, und 10 werden Projektionen soweit wie möglich nach unten propagiert. Projektionen nach unten (jedoch über die Selektionen) 6. Versuche Operationsfolgen zusammenzufassen, wenn sie in einem Durchlauf ausführbar sind (z.B. Anwendung von Regel 1, Regel 3, aber auch Zusammenfassung aufeinanderfolgender Selektionen und Operationen zusammenfassen Projektionen zu einer Filter-Operation). Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 30 Anwendung der Transformationsregeln SELECT distinct s.Semester FROM Studenten s, hören h Vorlesungen v, Professoren p WHERE p.Name = ´Sokrates´ AND v.gelesenVon = p.PersNr AND v.VorlNr = h.VorlNr AND h.MatrNr = s.MatrNr p v s Datenbanken für Mathematiker, WS 11/12 h Kapitel 11: Anfragebearbeitung 31 Aufspalten der Selektionsprädikate p v s p h v s Datenbanken für Mathematiker, WS 11/12 h Kapitel 11: Anfragebearbeitung 32 Verschieben der Selektionsprädikate v p p v s s h h Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 33 Zusammenfassung von Selektionen und Kreuzprodukten zu Joins v p v s h Datenbanken für Mathematiker, WS 11/12 s p h Kapitel 11: Anfragebearbeitung 34 Optimierung der Joinreihenfolge Kommutativität und Assoziativität ausnutzen s h v s p v h p Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 35 Was bringt das ? 4 4 s 13 3 h 13 v s p 1 v h p Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 36 Einfügen von (zusätzlichen) Projektionen s s h h v p Datenbanken für Mathematiker, WS 11/12 v p Kapitel 11: Anfragebearbeitung 37 Physische Optimierung • Ziel ist es gute Algorithmen für die Ausführung auswählen • Bei Join: • • • • Nested-Loop-Join Index-Nested-Loop-Join Merge-Join Hash-Join • Indexe und Vorsortierungen sollten möglichst gut ausgenutzt werden. • Nach Bedarf werden Indexe und Sortierungen akut erstellt. Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 38 Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 39 Implementierung von Join: Strategien J1 nested (inner-outer) loop • „brute force“-Algorithmus foreach r R foreach s S if s.B = r.A then Res := Res (r s) • Laufzeit: O(|R|*|S|) ~ O(n²) • Keine Vorbedingungen • Auch geeignet für das kartesische Produkt • Fazit: Der einfachste und flexibelste Join Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 40 Implementierung von Join: Strategien J2 Zugriffsstruktur auf S Index Nested Loop Join in jedem Durchlauf von R werden nur die in S qualifizierenden Tupel gelesen Vorbedingung: ein Index auf B foreach r R foreach s S[B=r.A] Res := Res (r s) Laufzeit: O(|R|*query(S[B=r.A])*|S[B=r.A]|) Queryzeit ist O(log n) für B-Bäume und O(1) für Hash Wenn B Schlüssel ist, dann ist |S[B=r.A]|= 1 O(n) im besten Fall bis O(n²) im schlechtesten (∀ r,s: r.A = s.B) Meistens O(n log n) Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 41 Implementierung von Join: Strategien J3 Merge-Join • • Vorbedingung: Beide Relationen sind passend sortiert. 2 pointer r, s =0 • while (R[r].exists() && S[s].exists()) { if (R[r] == S[s]) { output.add(R[r]);r++;s++; } else if (r< s) r++; else s++; } • • falls A oder B Schlüsselattribut ist, wird jedes Tupel in R und S nur genau einmal gelesen -> O(|R|+|S|) ~O(n) Kann sich sogar lohnen, wenn R oder S erst sortiert werden müssen 1 3 6 7 9 11 13 2 4 6 7 8 11 13 Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 42 Implementierung von Join: Strategien J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) HashBuckets abgebildet Hash-Buckets sind i.Allg. auf dem Hintergrundspeicher (abhängig von der Größe der Relationen) Zu verbindende Tupel befinden sich dann im selben Bucket Wird (nach praktischen Tests) nur von J3 „geschlagen“, wenn die Relationen schon vorsortiert sind Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 43 Übersetzung der logischen Algebra NestedLoopR.A=S.B R MergeJoinR.A=S.B [Bucket] [SortR.A] [SortS.B] S R S AR.A=S.B R S IndexJoinR.A=S.B R HashJoinR.A=S.B [HashS.B | TreeS.B] R S Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung S 44 Implementierung von Select: Strategien • S1 Select • Brute-Force: Jedes Tupel wird einzeln überprüft • O(n) • S2 IndexSelect • Der Index wird benutzt um die Anfrage schneller zu beantworten • O(1) bei Hash Index und Gleichheit • O(log n) bei B-Baum und Gleichheit • O(log n) bei B-Baum und Bereichsanfrage Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 45 Übersetzung der logischen Algebra IndexSelectP R P R SelectP R Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 46 Implementierung der Projektion • Wenn mit dem Projektionsergebnis weitergerechnet wird, muss das Zwischenergebnis dupliziert werden. • Die Duplikation sollte nach Möglichkeit einen Index oder eine Sortierung erhalten, wenn diese noch weiter benötigt werden. Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 47 Übersetzung der logischen Algebra [IndexDup] [SortDup] [Hash | Tree] l Sort Projectl R Projectl R [NestedDup] R Projectl Datenbanken für Mathematiker, WS 11/12 RKapitel 11: Anfragebearbeitung 48 Wiederholung der Optimierungsphasen s.Semester select distinct s.Semester from Studenten s, hören h Vorlesungen v, Professoren p where p.Name = ´Sokrates´ and v.gelesenVon = p.PersNr and v.VorlNr = h.VorlNr and h.MatrNr = s.MatrNr p.Name = ´Sokrates´ and ... s Datenbanken für Mathematiker, WS 11/12 p Kapitel 11: Anfragebearbeitung v h 49 s s h h v v Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 50 Kostenbasierte Optimierung Generiere alle denkbaren Anfrageauswertungspläne Enumeration Bewerte deren Kosten Kostenmodell Statistiken Histogramme Kalibrierung gemäß verwendetem Rechner Abhängig vom verfügbaren Speicher Aufwands-Kostenmodell - Durchsatz-maximierend - Nicht Antwortzeit-minimierend Behalte den billigsten Plan Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 51 Tuning von Datenbanken Statistiken (Histogramme, etc.) müssen explizit angelegt werden Anderenfalls liefern die Kostenmodelle falsche Werte In Oracle … analyze table Professoren compute statistics analyze table Professoren estimate statistics In DB2 … runstats on table … Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 52 Analysieren von Leistungsengpässen Geschätzte Kosten von Oracle Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 53 Fazit Datenbankoptimierung ist recht kompliziert Die Besonderheiten der Anfragesprache erlauben es weitgehende Optimierungen durchzuführen. Dabei ist vor allem die Reihenfolge der Operationen relevant. Indexe ermöglichen es schnellere Operationen zu verwenden. Über Verschachtelungen hinweg, kann es allerdings schneller sein, sie nicht zu benutzen. Datenbanken für Mathematiker, WS 11/12 Kapitel 11: Anfragebearbeitung 54