Schritt 7: Indexe

Top  Previous  Next

Ganz allgemein spielen Indexe im Zusammenhang mit Datenbanken eine sehr wichtige Rolle. Wenn Ihre Tabellen größer werden, dauert es immer länger, einen bestimmten Datensatz zu suchen, falls man dabei jedesmal von vorne alle durchgehen muss. Deshalb legt man ein sortiertes Inhaltsverzeichnis der Datensätze an, mit dessen Hilfe man den gesuchten sofort findet.

Ein Beispiel: In der Auto-Tabelle benötigt man oft das Modelljahr des Fahrzeugs. Aus diesem Grund legt man einen nach dem Modelljahr sortierten Index an. Der erste Eintrag in diesem Index verweist auf das neueste, der letzte auf das älteste Fahrzeug der Tabelle. Nun gibt es aber mehrere Autos mit dem gleichen Modelljahr, deren Reihenfolge untereinander nicht festgelegt ist. Deshalb kann man beim Aufbau eines Index mehrere Sortierkriterien angeben. Ein Index über Modelljahr, Hersteller und Bezeichnung würde somit den 1981er Alfa Spider von Alfa-Lancia vor dem 1981er 200 D von Daimler einsortieren und letzteren wiederum vor dem 250 D der gleichen Firma.

 

Tut_07_IndexManager

Abbildung:Mit dem Indexmanager verschaffen Sie sich einen schnellen Überblick über die existierenden Indexe

 

Aufgebaut ist ein solcher Index schnell. Öffnen Sie dazu im Projektnavigator das Datenmodell mit einem Doppelklick auf das Datenbanksymbol oder mit dem Schalter Ausführen. Klicken Sie dann auf die Tabelle für die Sie einen neuen Index erzeugen möchten. Mit dem Befehl Tabelle/Indexe... im Menü gelangen Sie zum Index-Manager. Hier finden Sie zunächst eine Übersicht aller Indexe, die für die selektierte Tabelle zur Zeit existieren. Auf der linken Seite dieser Liste steht der Name der Datei, in welcher der Index abgelegt ist. Danach folgt eine Beschreibung der Komponenten, aus denen der Index aufgebaut wurde. Die Reihenfolge dieser Komponenten spiegelt die Wichtigkeit der Sortierkriterien wieder, wobei die Priorität von links nach rechts immer weiter abnimmt. Es ist also etwas völlig anderes, ob Sie als Indexdefinition zuerst Modelljahr und dann Hersteller und Bezeichnung, oder erst Hersteller gefolgt von Modelljahr und Bezeichnung eingeben.

Mit dem Knopf Neu... oder Ändern... öffnen Sie einen Dialog, mit dessen Hilfe Sie einen neuen Index definieren können.

Auf der ersten Seite des Registers befindet sich ein Feld für den Indexnamen, also den Dateinamen ohne Dateierweiterung (*.ind). Im Optionsfeld für den Indextyp können Sie festlegen ob die Sortierung anhand von Datenfeldern oder anhand einer Berechnungsvorschrift bestimmt werden soll. Mit dem Markierungsfeld Eindeutigkeit können Sie zudem eindeutige Werte für neue Werte des indizierten Feldes oder der indizierten Felder erzwingen.

 

Tut_07_IndexDlg_Pg1

Abbildung: Definition eines neuen Index, Seite 1

 

Auf der zweiten Seite sehen Sie eine Liste aller Spalten der aktuellen Tabelle. Hier können Sie bestimmen, welche Komponenten, also Felder der Datentabelle, an der Sortierung beteiligt sein sollen. In der rechten Box, die zu Beginn noch leer ist, wird der Index zusammengebaut. Mit dem Knopf Tut_07_IconIndexAddField kann man nun selektierte Einträge der Spaltenliste zum Index-Aufbau hinzufügen. Mit Tut_07_IconIndexRemoveField kann man selektierte Index-Komponenten wieder löschen, und Tut_07_IconIndexRemoveAll entfernt alle bisher eingefügten Index-Komponenten. Für jede Komponente kann außerdem eine Sortierreihenfolge festgelegt werden. Bei einer aufsteigenden Reihenfolge steht also der Eintrag mit dem niedrigsten Wert des Sortierkriteriums an erster Stelle, bei einer absteigenden entsprechend umgekehrt.

Wenn die gewählte Tabellenspalte ein sehr langer alphanumerischer Typ ist, empfiehlt es sich, nicht alle Zeichen zur Sortierung heranzuziehen, sondern z.B. nur die ersten 20. In diesem Fall tragen Sie vor dem Hinzufügen die gewünschte Länge in das Feld Länge ein. Diese Beschränkung hat den Vorteil, dass der Index schneller bearbeitet werden kann und weniger Platz auf Ihrer Festplatte beansprucht.

 

Tut_07_IndexDlg_Pg2

Abbildung: Definition eines neuen Index, Seite 2

 

Den Wert auf der dritten Seite belassen Sie am besten in der Standard-Einstellung.

Sobald Sie die Indexbeschreibung mit OK bestätigen, beginnt das Erstellen des Index. Dies dauert umso länger, je mehr Datensätze Ihre Tabelle enthält. Bei einigen hundert Datensätzen werden Sie kaum eine Verzögerung bemerken.

Wie können Sie nun feststellen, welchen Effekt der neue Index auf die Datenbank hat? Hätte Ihre Tabelle tausende von Einträgen, würden Sie deutlich erkennen können, dass die Suche z.B. nach Fahrzeugen, die vor 1985 gebaut worden sind, erheblich schneller abläuft. Bei einer kleinen Tabelle wie der in unserem Beispiel ist auch die normale Suche blitzschnell erledigt.

Allerdings können Sie den Index dazu verwenden, um sich die Datensätze in seiner Sortierreihenfolge anzeigen zu lassen. Sie brauchen nur Ansicht/Sortierung... zu wählen und erhalten eine Liste mit den Beschreibungen aller vorhandenen Indexe. Außer dem soeben von Ihnen erstellen Index über das Modelljahr finden Sie auch noch den gerade aktiven Index über die Satznummer sowie Nur markierte Datensätze, Laufende_Nummer und Hersteller.

[Unsortiert] steht für die Reihenfolge der Datensätze, wie sie in der Tabelle selbst vorliegt, und entspricht im großen und ganzen der Reihenfolge bei der Eingabe. Die neu eingegebenen Datensätze stehen hier also ganz am Ende. Auch Nur markierte Datensätze ist kein richtiger Index, sondern dient einfach dazu, nur die markierten Datensätze anzuzeigen. Laufende_Nummer ist ein von TurboDB Studio selbständig erzeugter Index, der die Einträge nach dem Inhalt der Spalte Laufende_Nummer sortiert. Bezeichnung, Modelljahr wurde erstellt, um die Suche nach bestimmten Fahrzeugen zu beschleunigen, und eine alphabetische Sortierung zur ermöglichen.

Selektieren Sie einfach Ihren soeben erstellten Index und bestätigen Sie die Eingabe. In der Tabellensicht sehen Sie am deutlichsten, dass die Fahrzeuge nun nach den von Ihnen bestimmten Kriterien geordnet sind.

Der Index-Manger bietet überdies die Möglichkeit, einen berechneten Index zu erstellen. Doch dazu mehr im Kapitel über TurboDB Indexe.

Mit dem Punkt Löschen können Sie einen vorhandenen und nicht mehr benötigten Index löschen. Die Knöpfe Reparieren bzw. Alle reparieren ermöglichen Ihnen schließlich, einen bzw. alle Indexe neu aufzubauen. Diese beiden letzten Befehle sollten Sie eigentlich nicht benötigen. Es kann aber schon einmal vorkommen, dass der Index beim Importieren von Datensätzen oder bei anderen komplizierten Operationen beschädigt wird. Sie erkennen das daran, dass plötzlich Datensätze zu fehlen scheinen, oder Lücken in der Spaltendarstellung auftauchen.