FH-Hof Effizienz - Grundlagen Richard Göbel
FH-Hof Inhalt Einführung Aufwand für Anfragen ohne Indexierung Indexstrukturen für Anfragen an eine Tabelle Indexstrukturen für Anfragen an mehrere Tabellen Redundanz zur Beschleunigung von Anfragen Zusammenfassung
FH-Hof Bearbeitung einer Anfrage für eine Tabelle NrName 15Meier 16Müller 17Becker Tabelle Student SELECT Name FROM Student WHERE Nr = Zeit Anzahl
FH-Hof Bearbeitung einer Anfrage für mehrere Tabellen NrName 6Gelbor 7Unblau 8Becker Tabelle Dozent SELECT s.Name FROM Student s, Dozent d WHERE s.Name = d.Name Zeit Anzahl
FH-Hof Beispiel für den Aufwand einer Join-Anfrage DozentenStudentenVergleiche
FH-Hof Fragestellung Wie hoch ist der Zeitaufwand für die Bearbeitung einer Anfrage: in Abhängigkeit von der Anzahl der Einträge? in Abhängigkeit von anderen Parametern? Wie lässt sich der Aufwand für die Bearbeitung einer Anfrage reduzieren? Welche prinzipiellen Grenzen existieren hier?
FH-Hof Mögliche Ansätze Durchführung von Tests? Formales Modell zu Abschätzung des Aufwands? Kombination dieser Ansätze! Bestimmung des qualitativen Aufwands in Abhängigkeit von der Anzahl der Einträge (Modell) Durchführung von Test zur Überprüfung des Modells Schätzung des Aufwands mit Hilfe des Modells und der Tests
FH-Hof O-Notation Die O-Notation gibt eine qualitative Abschätzung für den Verlauf einer Funktion (hier dem Zeitaufwand) Für eine Funktion f wird der qualitative Aufwand mit einer einfacheren Funktion g angegeben: c, n 0 : n : n n 0 | f(n) | | c g(n) | f g n0n0
FH-Hof Aufwand für eine Tabelle ohne Indexierung Zeitaufwand für die Bearbeitung der gesamten Anfrage bei n Einträgen: O(n) Zeitaufwand für das Finden des nächsten Elements bei Zugriff mit Cursor? Zeitaufwand für das Finden des ersten Ergebnis bei n Einträgen und m Ergebnissen: Minimal: O(1) Durchschnittlich: O(n/m) Maximal: O(n-m)
FH-Hof Messwerte für eine Tabelle ohne Indexierung
FH-Hof Aufwand für mehrere Tabellen ohne Indexierung Universeller Ansatz: Erzeuge das Kreuzprodukt für alle Tabellen Überprüfe die Suchbedingung bezüglich des Kreuzprodukts Aufwand für das universelle Verfahren k Tabellen mit n 1,..., n k Einträgen Suchaufwand O(n 1... n k ) Falls alle Tabellen ca. n Einträge enthalten: O(n k ) Geht das auch besser?
FH-Hof Effiziente Suche in mehreren Tabellen Beispiel: Tabelle R mit den Spalten a und b Tabelle S mit den Spalten c und d Suchbedingung: a=2 AND b=c AND d=3 Effiziente Suchverfahren Anwenden der Teilbedingungen auf die Tabellen und danach Kreuzprodukt anwenden Anfrage für eine Tabelle ausführen und die Ergebnisse in die Suchanfrage für die zweite Tabelle einsetzen Effizienz dieser Verfahren?