Indexbasierte Suche

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Wechseln zu:Navigation, Suche
Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.
Die Aussagen sollten inhaltlich verbessert bzw. präzisiert werden.

In diesem Artikel fehlen die Quellenangaben.

Dieser Artikel ist nicht korrekt kategorisiert (siehe Regeln für GlossarWiki-Artikel).

1 Definition

Bei der indexbasierten Suche wird vor dem eigentlichen Suchvorgang ein Index generiert, anhand welchem später die Suche durchgeführt wird. Dadurch lassen sich beim späteren Suchen, insbesondere bei sehr großen Datenbeständen, erhebliche Zeitersparnisse gegenüber der sequentiellen Suche realisieren. Man geht hier bei der Suche von einer O-Notation von [math]O (log n)[/math] oder besser aus.

Der Suchindex von Volltextsuchen ist eine inverse Datenbank, die alle in den zugrunde liegenden Datenbeständen vorkommenden Deskriptoren enthält.

Mit Hilfe von Indizes lassen sich Daten schneller aus einer Datenbanktabelle auslesen. Dieser Index ist vergleichbar mit dem Index in einem Buch. Indizes sind eigenständige Tabellen, definiert man einen Index für eine Tabelle, so ist diese nach den Werten der betreffenden Spalte sortiert. Die Suche in einer indizierten Spalte beginnt somit nicht mehr in der Stammtabelle, sondern in dem für diese Spalte angelegten Index.

2 Vorteile

Indizes verbessern das Laufzeitverhalten und beschleunigen somit die Suche. Abfragen mit ORDER BY - Klauseln sind schon sortiert und werden daher von Indizes optimal unterstützt. Am meisten Sinn macht es für die Spalten Indizes zu definieren, welche oft durchsucht werden müssen. Diese treten auch oft in den ORDER BY und WHERE Klauseln auf.

3 Nachteile

Indizes belegen Speicherplatz. Je nach dem wie viele Indizes definiert wurden kann der Speicherverbrauch ziemlich groß sein. Ein weiterer Nachteil ist, dass nach jedem INSERT DELETE oder UPDATE die Indextabelle vom Datenbanksystem neu sortiert werden muss um die Sortierreihenfolge wiederherzustellen. Die Verarbeitungsgeschwindigkeit sinkt, da der Verwaltungsaufwand, die Indextabellen aktuell zu halten steigt.

4 Verwendung

  • Spalten, welche mehrmals in WHERE- oder ORDER BY - Klauseln auftreten.
  • Spalten, welche über einen JOIN gebildet werden
  • Abfragen in welchen mehrfach vergleichsoperationen vorkommen WHERE spalte1 = spalte2
  • Index ist umso effizienter umso weniger Duplikate in der indizierten Spalte sind.
  • Nicht sinnvoll boolesche Felder zu indizieren.

4.1 Syntax zur Definition von Indizes:

CREATE INDEX idx_indexname ON tabelle (attribut)

4.2 Syntax um Indizes wieder zu entfernen:

DROP INDEX indexname [, indexname];

5 Beispiel

Im Rahmen unserer Semesterarbeit im Fach Datenbanken, haben unter anderen folgende Tabellen erstellt für ein CMS eines Sportvereins. departments (Abteilungen), members (Mitglieder), memberships(Mitgliedschaften). Aufgrund dessen das die Abfrage welche Mitglieder in welcher Abteilung mitglied sind oft gebraucht wird, haben wir folgenden Index definiert.

CREATE INDEX idx_department_id ON memberships(department_id);

6 Quellen