DB2 10.5 for Linux, UNIX and Windows

Erstellen von Indizes

Indizes können aus verschiedenen Gründen erstellt werden, unter anderen, um Abfragen effizienter auszuführen, die Zeilen einer Tabelle aufsteigend oder absteigend nach den Werten einer Spalte zu sortieren oder um Integritätsbedingungen wie zum Beispiel für die Eindeutigkeit der Indexschlüssel zu erzwingen. Sie können die Anweisung CREATE INDEX, den DB2-Designadvisor oder den Designadvisorbefehl db2advis verwenden, um die Indizes zu erstellen.

Vorbereitende Schritte

Auf Solaris-Plattformen ist Patch 122300-11 für Solaris 9 bzw. 125100-07 für Solaris 10 erforderlich, um Indizes auf Roheinheiten (RAW) erstellen zu können. Ohne dieses Patch wird die Anweisung CREATE INDEX blockiert, wenn eine Roheinheit verwendet wird.

Informationen zu diesem Vorgang

Diese Task geht davon aus, dass Sie einen Index für eine nicht partitionierte Tabelle erstellen wollen.

Vorgehensweise

Verwenden Sie zum Erstellen eines Index über die Befehlszeile die Anweisung CREATE INDEX.
Beispiel:
    CREATE UNIQUE INDEX EMP_IX
      ON EMPLOYEE(EMPNO)
      INCLUDE(FIRSTNAME, JOB)
Die Klausel INCLUDE, die nur für eindeutige Indizes verwendbar ist, gibt zusätzliche Spalten an, die an die Gruppe der Indexschlüsselspalten angehängt werden. Alle Spalten, die mit dieser Klausel in den Index eingeschlossen werden, werden nicht zur Umsetzung der Eindeutigkeit verwendet. Solche INCLUDE-Spalten können die Leistung einiger Abfragen durch die Möglichkeit eines reinen Indexzugriffs verbessern. Diese Option bietet folgende Vorteile:
  • Sie hilft bei der Vermeidung ansonsten notwendiger Zugriffe auf die Datenseiten für weitere Abfragen.
  • Sie hilft bei der Vermeidung redundanter Indizes.
Wenn die Anweisung SELECT EMPNO, FIRSTNAME, JOB FROM EMPLOYEE an der Tabelle, für die dieser Index definiert ist, ausgeführt wird, können alle angeforderten Daten aus dem Index abgerufen werden, ohne dass die Datenseiten gelesen werden müssen. Dies verbessert die Leistung.

Nächste Schritte

Wenn eine Zeile gelöscht oder aktualisiert wird, werden die Indexschlüssel als gelöscht markiert, jedoch erst physisch von der Seite entfernt, wenn einige Zeit nach dem Festschreiben der Löschung bzw. Aktualisierung eine Bereinigung erfolgt. Solche Schlüssel werden als pseudogelöscht bezeichnet. Eine solche Bereinigung kann zum Beispiel durch eine nachfolgende Transaktion durchgeführt werden, welche die Seite ändert, auf der der Schlüssel als gelöscht markiert ist. Die Bereinigung pseudogelöschter Schlüssel kann explizit durch Verwenden des Parameters CLEANUP ONLY ALL im Befehl REORG INDEXES ausgelöst werden.