Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

14.1.1 Normalisieren des Datenmodells

14.1.2 Indizes

Die richtigen Indizes ermöglichen einen schnellen Zugriff auf die Daten einer Tabelle. Dieser Zugriff erfolgt meist durch Abfragen und bezieht sich oft auf mehr als eine Tabelle. Damit die ACE-Engine die Verknüpfungen schnell verarbeiten kann, sollten alle an einer Verknüpfung beteiligten Felder indiziert sein. Beim Primärschlüsselfeld ist das ohnehin der Fall: Es wird nicht nur indiziert, sondern es ist auch noch eindeutig und lässt keine Null-Werte zu. Auch für Fremdschlüsselfelder ist ein Index zu empfehlen. Wenn Sie eine Beziehung zwischen zwei Tabellen etwa im Beziehungen-Fenster herstellen (siehe Abbildung 14.2), legt Access automatisch einen Index für das Fremdschlüsselfeld der Detailtabelle an (siehe Abbildung 14.3).

Abbildung 14.2: Das Anlegen einer Beziehung im Beziehungen-Fenster ...

Abbildung 14.3: ... führt zum automatischen Anlegen eines Index für das Fremdschlüsselfeld

Auch für Felder, die nicht fester Bestandteil einer Beziehung sind, aber gegebenenfalls in einer Abfrage als Schlüsselfeld dienen, legt man einen Index an.

Indizieren Sie auch Felder, die als Sortier- oder Filterkriterium in Abfragen dienen. Sparen Sie dabei nur jene Felder aus, die nur wenige unterschiedliche Werte enthalten wie beispielsweise Ja/Nein-Felder.

Kriterium für das Indizieren von Feldern

Ob ein Index abhängig von den Datensätzen sinnvoll ist oder nicht, lässt sich mit der Eigenschaft DistinctCount eines Index über folgende Funktion berechnen. Die Funktion ermittelt das Verhältnis der enthaltenen verschiedenen Werte zu der Gesamtanzahl der Werte. Dazu übergeben Sie der Routine den Namen der zu prüfenden Tabelle und des Index. Ein Aufruf könnte beispielsweise wie folgt aussehen und das angegebene Ergebnis liefern (Beispiel aus der Nordwind-Datenbank):

? GetIndexDistinct ("Bestellungen", "Versanddatum")
0,467469879518072

Wenn das Ergebnis zwischen 0,1 und 0,5 liegt, macht der angelegte Index Sinn. Die Funktion sieht folgendermaßen aus:

Function GetIndexDistinct(strTabelle As String, strIndex As String) _
    As Double

    Dim db As Database
    Dim tdf As TableDef
    Dim lngDistinct As Long
    Dim lngRecordCount As Long

    Set db = CurrentDb
    Set tdf = dbs.TableDefs(strTabelle)
    lngDistinct = tdf.Indexes(strIndex).DistinctCount
    lngRecordCount = tdf.RecordCount
    GetIndexDistinct = lngDistinct / lngRCnt
    Set tdf = Nothing
    Set dbs = Nothing

End Function

Listing 14.1: Diese Routine prüft, ob ein Feld indexiert werden sollte

Die Routine funktioniert nicht mit verknüpften Tabellen, da die Recordcount-Eigenschaft des TableDef-Objekts hier den Wert -1 ausgibt. Und hinterfragen Sie nicht den Sinn dieser Funktion, wenn Sie diese mit einem Primär- oder eindeutigen Schlüssel testen - hier liefert die Funktion logischerweise den Wert 1.

Manchmal ist weniger mehr

Das Indizieren von Feldern ist allerdings kein Wundermittel, wenn es um Performance-Steigerungen geht. Wenn Sie mehrspaltige Indizes verwenden, binden Sie so wenig Felder wie möglich in den Index ein. Verwenden Sie außerdem eindeutige Indizes, wenn dies möglich ist.

Und zu guter Letzt: Indizieren Sie nicht zu viele Felder! Bedenken Sie, dass eine Datenbankanwendung nicht nur zur Auswahl von Daten gedacht ist, sondern dass damit auch Daten angelegt, bearbeitet und gelöscht werden sollen. Bei all diesen Operationen müssen die Indizes aktualisiert werden, was wiederum zu Lasten der Performance geht. Als Leitsatz kann gelten: Je größer die beteiligten Tabellen sind und je mehr Datensätze sie enthalten, desto wichtiger sind Indizes beim Mehrbenutzerbetrieb, weil diese die zu übertragende Datenmenge in der Regel reduzieren.

Nächster Abschnitt:

14.1.3 Datentypen

© 2006-2008 André Minhorst Alle Rechte vorbehalten.