Für die Tabellenfelder einer Access-Datenbank gibt es neben den üblichen Eigenschaften auch noch eine namens Indiziert. Außerdem finden wir noch einen Dialog namens Indizes. Beides dient dazu, Indizes für einzelne Felder oder zusammengesetzte Indizes zu definieren. Was aber sind solche Indizes Für Datenbanken mit überschaubaren Datenmengen verwenden wir normalerweise nur einen Index für das Primärschlüsselfeld. Wenn Sie jedoch größere Datenmengen schnell durchsuchen wollen, ist das Anlegen geeigneter Indizes wichtig. In diesem Artikel schauen wir uns die Grundlagen zur Indizierung an.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2104_GrundlagenDerIndizierung.accdb.
Indexarten
Es gibt verschiedene Arten von Indizes, die über die Eigenschaft Indiziert eines Feldes einer Tabelle definiert werden oder, im Falle von zusammengesetzten Indizes, über einen speziellen Dialog:
- Kein Index: Das Feld enthält keine Indizierung.
- Eindeutiger Index: Das Feld enthält eine Indizierung, die dafür sorgt, dass jeder Wert nur einmal aufgenommen werden kann.
- Nicht eindeutiger Index: Das Feld enthält eine Indizierung, aber Werte können auch mehrfach vorkommen.
Was ist ein Index
Dabei taucht die Frage auf, was überhaupt ein Index ist. Unter Index versteht man eine Einrichtung, die dafür sorgt, dass Datensätze schnell nach den Daten im indizierten Feld durchsucht oder nach diesen sortiert werden können.
Dabei erstellt Access den Index im Hintergrund, indem für die einzelnen Werte des indizierten Feldes Zahlenwerte hinterlegt werden, die eine bestimmte Reihenfolge haben und somit eine schnelle Sortierung und eine schnelle Suche erlauben.
Wie das genau funktioniert, erläutern wir in einem weiteren Artikel im Detail. Hier soll es zunächst um die Möglichkeiten der Benutzeroberfläche zum Einrichten von Indizes und die Auswirkungen dieser Indizes gehen.
Welche Felder können indiziert werden
Sie können nicht alle Felder mit einem Index versehen. Grundsätzlich ist das möglich bei den folgenden Felddatentypen:
- Kurzer Text
- Langer Text
- Zahl
- Große Ganzzahl
- Datum/Uhrzeit
- Datum/Uhrzeit erweitert
- Währung
- Autowert
- Ja/Nein (nicht empfehlenswert, da keine besondere Performancesteigerung zu erwarten)
- Link
Für folgende Felddatentypen können Sie grundsätzlich keinen Index definieren:
- OLE-Objekt
- Anlage
- Berechnet
Index im Primärschlüsselfeld
Die Chance, dass Sie bereits einmal einen Index verwendet haben, ist sehr hoch – zumindest, wenn Sie, wie es üblich ist, Ihre Tabellen mit einem Primärschlüsselfeld ausstatten. Für Primärschlüsselfelder legt Access automatisch einen eindeutigen Index an. Das können Sie in Bild 1 erkennen, wo wir das Feld KundeID als Primärschlüsselfeld markiert haben.
Bild 1: Primärschlüsselfeld mit eindeutigem Index
Die Eigenschaft Indiziert erhält hier automatisch den Wert Ja (Ohne Duplikate). Das beinhaltet einige wichtige Funktionen für einen Primärschlüssel:
- “Ohne Duplikate” bedeutet, dass jeder Wert nur einmal in dieser Tabelle angelegt werden kann. Das ist wichtig, wenn wir in Beziehungen zwischen zwei Tabellen der einen Tabelle über ein Fremdschlüsselfeld einen der Datensätze der Tabelle mit dem Primärschlüsselfeld zuweisen. Sollte es in der Tabelle mit dem Primärschlüsselfeld mehrere Datensätze mit dem gleichen Wert geben, wäre eine eindeutige Zuordnung nicht mehr möglich.
- Die Indizierung sorgt außerdem dafür, dass schnell nach den Werten in dem Primärschlüsselfeld sortiert werden kann und vor allem, dass die Suche schnell ist. Wenn Sie zu einer Bestellung den verknüpften Kundendatensatz benötigen, wollen Sie ja nicht ewig warten, bis dieser gefunden wurde.
Automatisch angelegte Indizes
Wenn Sie Tabellen neu erstellen oder Daten aus externen Quellen importieren, beispielsweise aus einer Excel-Tabelle oder aus einer anderen Datenbank, legt Access für Felder, die bestimmte Schlüsselphrasen in ihrem Namen enthalten, automatisch Indizes mit der Eigenschaft Ja (Ohne Duplikate) an. Das können Sie ganz einfach ausprobieren, indem Sie ein neues Feld namens AnredeID zur Beispieltabelle tblKunden hinzufügen – siehe Bild 2.
Bild 2: Tabellenfeld mit einfachem Index
Wonach entscheidet Access, ob automatisch ein Index für ein Feld angelegt werden soll Das hängt von der Einstellung einer Eigenschaft in den Access-Optionen ab. Im Optionen-Dialog (Ribbon-Eintrag Datei|Optionen) finden Sie im Bereich Objekt-Designer die Eigenschaft AutoIndex beim Importieren/Erstellen (siehe Bild 3) – hier mit dem Wert ID;Key;Schlüssel;Code. Jede dort per Semikolon getrennte Phrase wird beim Anlegen von neuen Feldern überprüft. Ist diese im Feldnamen enthalten, wie beispielsweise in AnredeID, erhält das Feld für die Eigenschaft Indiziert den Wert Ja (Duplikate möglich). Achten Sie darauf, dass keine Leerzeichen in der Auflistung vorkommen dürfen.
Bild 3: Phrasen, für die automatisch Indizes erstellt werden
Diese Eigenschaft ist auf jeden Fall sinnvoll, wenn sie ihrer Benennung von Fremdschlüsselfeldern entgegenkommt – anderenfalls können Sie die Schlüsselwörter für den AutoIndex aber auch an Ihre Bedürfnisse anpassen. In diesem Magazin nutzen wir für Fremdschlüsselfelder immer die Zeichenfolge ID am Ende, sodass Access für Fremdschlüssel automatisch einen Index anlegt.
Warum Indizes für Fremdschlüsselfelder
Aber benötigen wir überhaupt einen Index für einen Fremdschlüssel Für den Primärschlüssel hört sich das logisch an: Immerhin suchen wir von Tabellen mit Fremdschlüsseln aus nach dem Datensatz mit dem entsprechenden Primärschlüsselwert.
Der Index für ein Fremdschlüsselfeld ist zum Beispiel dann sinnvoll, wenn Sie die Löschweitergabe für die Beziehung definiert haben. Das bedeutet, dass wenn Sie Datensätze aus dem Feld mit dem Primärschlüsselfeld löschen, auch die damit verknüpften Datensätze aus der Tabelle mit dem Fremdschlüsselfeld gelöscht werden sollen. Und beim Auffinden der so zu löschenden Datensätze hilft der Index für das Fremdschlüsselfeld. Anderenfalls müsste Access beim Löschvorgang die gesamte Tabelle durchlaufen, um den zu löschenden Datensatz zu finden.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: