Ein Index auf eine Basistabelle wird verwendet, um den Zugriff auf eine Tabelle zu beschleunigen. Ein Index ist eine baumartige Zugriffsstruktur, die einer Spalte oder Spaltenkombination einer bestimmten Tabelle zugeordnet ist und Verweise auf die Sätze dieser Tabelle enthält. Ein Index ordnet über eine sogenannte invertierte Liste jedem Wert einer Spalte die Sätze zu, die diesen Wert in der betreffenden Spalte enthalten. Entsprechendes gilt für Spaltenkombinationen.
Je nachdem, ob sich ein Index auf eine oder mehrere Spalten bezieht, spricht man von einem einfachen oder von einem zusammengesetzten Index.
SESAM/SQL verwendet einen Index,
um schnell auf Sätze mit bestimmten Werten in den Indexspalten zugreifen zu können
um die Sätze einer Tabelle in der Reihenfolge der Werte der Indexspalten zu liefern
um Integritätsbedingungen auf einer oder mehreren Spalten des Index ohne Zugriff auf die Basistabelle auszuwerten.
Die zusätzliche Verwaltung eines Index erhöht den Aufwand bei Einfüge- und Änderungsanweisungen sowie bei Recovery-Maßnahmen. Daher sollten die folgenden Richtlinien berücksichtigt werden:
Für Tabellen mit wenig Sätzen sollten keine Indizes erzeugt werden. Der Zeitgewinn durch einen Index wird bei kleinen Tabellen schon durch die Zeit für das Öffnen und Durchsuchen der Indexdatei zunichte gemacht.
Für eine Spalte, in der nur sehr wenige unterschiedliche Werte vorkommen, sollte kein Index erzeugt werden.
Bei Tabellen, die vorwiegend für die Datenwiedergewinnung verwendet werden, sollten Indizes häufiger verwendet werden als bei Tabellen, in denen oft geändert wird.
Ein Index wird mit den SQL-Anweisungen CREATE INDEX und ALTER TABLE erzeugt und mit DROP INDEX gelöscht.
Speicherstruktur von Indizes
Wenn ein Index mit CREATE INDEX angelegt wird, dann wird Speicherplatz, der sogenannte zusammenhängende Bereich des Index, reserviert. Die einzufügenden Werte werden in diesem Bereich gespeichert. Wenn ein Wert eingefügt werden soll und der Platz in diesem Bereich nicht mehr ausreicht, dann wird eine sogenannte Auslagerung, ein freier Block, angelegt. Dieser Block gehört logisch zum Index, liegt aber physikalisch nicht mehr im zusammenhängenden Bereich des Index.
Bei der nächsten Reorganisation des Anwender-Space mit der Anweisung REORG SPACE werden alle existierenden Tabellen und Indizes auf dem Anwender-Space neu aufgebaut. Damit verschwinden auch die Auslagerungen.
Index für eine Eindeutigkeitsbedingung
Für jede Spalte oder Spaltenkombination, für die die Eindeutigkeitsbedingung definiert ist, benötigt SESAM/SQL einen Index. Wenn bereits ein Index mit CREATE INDEX für die betreffende Spalte oder Spaltenkombination erzeugt wurde, so wird dieser Index zusätzlich für die Eindeutigkeitsbedingung verwendet.
Ansonsten erzeugt SESAM/SQL den Index automatisch. Der Name des so erzeugten Index beginnt mit UI, gefolgt von einer 16-stelligen Zahl.
REORG STATISTICS-Anweisung
REORG STATISTICS baut die globale Statistik für einen Index neu auf. REORG STATISTICS ist sinnvoll nach einer umfangreichen Änderung und Neuaufnahme. Eine aktualisierte Statistik-Information ermöglicht intern eine genauere Kostenabschätzung und Entscheidung für die Auswahl des günstigsten Zugriffsplans (siehe "Hohe Leistungsfähigkeit").