Access 2003 Basis

4.1.13 Tabellen mit Indizes versehen

Access ist ein sehr schnelles Datenbanksystem. Es lassen sich problemlos Datenmengen von mehreren hunderttausend Datensätzen in einer Tabelle verwalten. Kommen Ihnen die Suchvorgänge im Laufe der Zeit in einer Tabelle dennoch recht langsam vor, so können Sie durch die Verwendung von Indizes in ausgewählten Feldern Abfragen sehr stark beschleunigen.

Ein Index funktioniert dabei prinzipiell wie der Index in einem Buch. In einem zusätzlichen Verzeichnis werden von Access die Index-Feldinhalte und die Verweise auf die zugehörigen Datensätze verwaltet. Wenn Sie nun die Suche nach einem bestimmten Begriff auslösen, benutzt Access nicht die Gesamttabelle, sondern sucht den Suchbegriff zuerst im Index. Dort kann der gesuchte Name wesentlich schneller gefunden werden und über den Verweis auf die reale Datensatznummer kann auch schneller innerhalb der Tabelle auf den gewünschten Datensatz zugegriffen werden. Doch es gibt auch Nachteile.

Durch die Indizierung von Tabellenfeldern entstehen Indextabellen, die zwar nicht gezeigt werden, aber von Access programmintern angelegt und gepflegt werden müssen. Dadurch entsteht ein höherer Speicherbedarf auf der Festplatte. Wenn Sie für viele Felder einen Index anlegen, kann dies zu einer deutlichen Erhöhung des benötigten Speicherbedarfs führen. Auch kann beim Einfügen eines neuen Datensatzes eventuell eine Wartezeit entstehen, weil damit auch Einträge in den Indextabellen verbunden sind. Erstellen Sie deshalb Indizes ausschließlich für solche Datenfelder, nach deren Feldinhalten Sie später wirklich suchen wollen.

Indizes werden von Access automatisch gepflegt: Sind sie erst einmal angelegt, so muss man sich nicht mehr um sie kümmern. Beim Komprimieren einer Datenbank werden sämtliche Indizes reorganisiert. Prinzipiell gibt es die folgenden Arten von Indizes:

Indizes mit Duplikaten

Diese erlauben den mehrfachen Eintrag desselben Wertes in ein Tabellenfeld. Postleitzahlen dürften z. B. in einer größeren Tabelle nur selten als einmaliger Eintrag vorkommen. Hier müssten Sie also einen Index verwenden, der Duplikate zulässt.

Indizes ohne Duplikate

Jeder Feldinhalt muss sich eindeutig von allen anderen unterscheiden. Ein Beispiel dafür wäre die Sozialversicherungsnummer in einer Angestelltentabelle. Prinzipiell handelt es sich also immer um solche Felder, die auch als Schlüssel für die Tabelle verwendet werden könnten. Ist ein Eintrag bereits als Wert in der Tabelle vorhanden, so meldet Access beim nächsten Versuch dieses Eintrages einen Fehler und weist den Datensatz zurück. Eindeutige Indizes arbeiten schneller als nicht-eindeutige. Feldern, die zum Primärschlüssel erklärt wurden, wird automatisch ein Index ohne Duplikate zugewiesen.

Zusammengesetzte Indizes

Ein einfacher Index besteht aus genau einem Feld. Es ist jedoch auch möglich, mehrere Felder für einen Index zusammenzufassen. Diese können auch einen eindeutigen Index ergeben.

Sie sollten nur Felder, nach deren Inhalten gesucht oder sortiert wird, indizieren. So bleiben in der Regel die Telefonnummer und die Faxnummer ohne Index. Sie sollten nur die wirklich sinnvollen Felder indizieren. Dazu zählen

  1. Felder, in denen sehr häufig gesucht und sortiert wird. Dies könnten die Felder „Name“ und „Postleitzahl“ in einer Kundentabelle sein.

  2. Felder, die in verknüpften Tabellen auf der n-Seite einer 1:N-Beziehung stehen, also Fremdschlüsselfelder. Abfragen, in denen beide Tabellen vorkommen, werden durch solch eine Beziehung enorm beschleunigt.

  3. Felder, die eindeutig sein sollen. Das können mehrere Felder sein, die als Einheit betrachtet werden. Sie können über einen Index Dubletten in einer Tabelle vermeiden. Fassen Sie beispielsweise die Tabellenfelder Name, Vorname und Geburtsdatum in einer Mitarbeitertabelle zu einem Index ohne Duplikate zusammen, so werden Sie kaum noch versehentlich Namen mehrfach erfassen.

Kommentare (1)

sehr informativ am 16.06.2010 12:40:32

thomas schulte

Ihr Kommentar

Name