Tabellen [basics]: Mit Indizes arbeiten

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Ein paar Indizes hast Du in der Tabellen [basics]-Reihe bereits kennengelernt – zum Beispiel den Primärschlüssel. In diesem Artikel schauen wir uns an, wozu Indizes überhaupt dienen und wie Du sie optimal in den Tabellen Deiner Datenbankanwendung nutzen kannst. Dabei schauen wir uns an, wo Indizes helfen, die Performance zu verbessern und an welchen Stellen sie eher bremsend wirken. Außerdem lernst Du die verschiedenen Stellen kennen, an denen Du Indizes für eine Tabelle festlegen kannst und unter welchen Umständen Microsoft Access automatisch Indizes hinzufügt.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank 2301_TabellenBasics_Indizes.accdb.

Einsatzzwecke von Indizes

Die Definition von Indizes beziehungsweise Schlüsseln beschleunigt in der Regel den Zugriff auf die Daten einer Tabelle. Access verwendet einmal definierte Indizes automatisch. Andererseits erfordert die Pflege von Indizes während der Bearbeitung von Daten Rechenzeit, Arbeits- und Festplattenspeichern.

Wir sollten Indizes daher für alle Felder definieren, die wir häufig zur Datensuche oder zur Sortierung benötigen. Wenn wir eine bestimmte Sortierreihenfolge nur selten benötigen, können wir besser eine Abfrage definieren, in der die Suche nach den entsprechenden Daten dann optimiert wird. Das Ausführen einer Abfrage benötigt zwar verhältnismäßig mehr Zeit als der sortierte Zugriff über ein Schlüsselfeld, der wesentliche Zeitbedarf ist jedoch auf den Zeitpunkt beschränkt, wo die Abfrage zum ersten Mal ausgeführt und optimiert wir. Diesem Thema widmen wir jedoch einen späteren Artikel.

Der Vorteil einer Abfrage ist in diesem Fall, dass diese im Regelbetrieb im Gegensatz zur Pflege von Indizes beim Bearbeiten der betroffenen Daten nicht für Performanceeinbußen sorgt.

Neben der häufigen Datensuche und Sortierung spielt auch die relationale Verknüpfung eine wichtige Rolle zur Bildung von Indizes.

Primärschlüssel oder Primärindex

Der Begriff “Primärschlüssel” dürfte aus den vorherigen Artikeln dieser Artikelreihe bereits bekannt sein, weniger oft verwendet haben wir den Betriff “Primärindex”, der gleichbedeutend mit Primärschlüssel ist.

Der Primärschlüssel beschleunigt wie jeder andere Schlüssel den Zugriff auf die in dem Feld enthaltenen Daten. Außerdem ermöglicht der Primärschlüssel die eindeutige Identifikation eines jeden Datensatzes einer Tabelle.

Da der Primärschlüssel die Datensätze einer Tabelle eindeutig definiert, nimmt er eine Sonderstellung ein: Wir können für jede Tabelle nur einen Primärschlüssel beziehungsweise einen Primärindex definieren. Versuchen wir, für das Primärschlüsselfeld einen Wert doppelt einzugeben, erhalten wir eine entsprechende Fehlermeldung – und der Datensatz kann nicht gespeichert werden, solange das Primärschlüsselfeld keinen eindeutigen Datensatz enthält. Damit dies im Normalbetrieb nicht passiert, legen wir für das mit dem Primärindex versehene Feld die Autowert-Funktion als Datentyp fest. Diese liefert automatisch eindeutige Werte (wenn nicht bestimmte Umstände ein fehlerhaftes Verhalten der Autowert-Funktion provozieren).

Sekundärschlüssel oder Sekundärindex

Sekundärschlüssel beschleunigen genau wie Primärschlüssel die Suche oder die Sortierung nach den Daten der Felder, für die ein solcher Schlüssel definiert wurde. Während ein Primärschlüssel allerdings für die meisten Anwendungsfälle ein unverzichtbares Merkmal einer Tabelle ist, ist das bei Sekundärschlüsseln nicht der Fall – wie können hier also genau abwägen, ob und wo wir einen solchen Schlüssel definieren. Die Abwägung beinhaltet zwei Faktoren:

  • Wie oft greife ich lesend auf das mit dem Sekundärschlüssel zu versehende Feld zu, indem ich darin nach Werten suche oder nach den enthaltenen Werten sortiere
  • Wie oft schreibe ich Daten in die Tabelle (neue Datensätze oder Änderungen) oder ändere Daten in diesem Feld

Beim ersten Faktor sorgt der Sekundärschlüssel für einen Performancegewinn, beim zweiten für Performanceeinbußen. Das liegt daran, dass beim Ändern oder Hinzufügen von Daten zu einem Feld, das mit einem Sekundärindex versehen ist, genau wie einem Primärindex der Index gepflegt werden muss – das heißt, dass im Hintergrund Informationen gespeichert werden, die andererseits für die Performanceoptimierung beim Suchen oder Sortieren nach den Daten im betroffenen Feld sorgen.

Primärschlüssel hinzufügen

Um einen Primärschlüssel hinzuzufügen, zeigen wir die Anzeige im Tabellenentwurf an. Hier gibt es mehrere Möglichkeiten. Die offensichtlichste ist der Ribbonbefehl Primärschlüssel unter Tabellen-ent-wurf|Tools (siehe Bild 1). Nach der Auswahl des gewünschten Feldes und dem Betätigen dieser Schaltfläche markiert Access das Primärschlüsselfeld durch das Schlüsselzeichen links vom Feldnamen.

Hinzufügen eines Primärschlüssels

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar