Die CREATE INDEX-Anweisung (create_index_statement) definiert einen Index einer Basistabelle (siehe Tabelle).
<create_index_statement> ::=
CREATE [UNIQUE] INDEX <index_name> ON <table_name>
(<column_name> [ASC|DESC],...)
table_name, column_name, index_name
Indizes unterstützen den Zugriff auf die Tabellendaten über Nicht-Schlüsselspalten. Ihre Pflege bedeutet jedoch erhöhten Aufwand bei einer INSERT-, UPDATE oder DELETE-Anweisung.
Der Index wird über die angegebenen Spalten der Tabelle erzeugt. Der Sekundärschlüssel setzt sich aus den angegebenen Spalten der Tabelle zusammen, und zwar in der angegebenen Reihenfolge.
· Die angegebene Tabelle muss eine existierende Basistabelle sein, darf jedoch keine temporäre Tabelle sein. Der Indexname darf nicht mit einem bereits existierenden Indexnamen der Tabelle übereinstimmen.
· Die durch column_name definierte Spalte muss eine Spalte der angegebenen Tabelle sein. Diese Spalte darf keine LONG-Spalte sein. Alle Spaltennamen müssen paarweise verschieden sein.
· Der aktuelle Benutzer muss den Privileg-Typ INDEX für die Spalten besitzen.
Durch diese Angabe wird sichergestellt, dass keine zwei Zeilen der angegebenen Tabelle in den indizierten Spalten dieselben Werte besitzen. Enthalten zwei Zeilen für alle Spalten eines Index jeweils den NULL-Wert, so gelten diese beiden Indexwerte nicht als identisch. Enthält mindestens eine Spalte nicht den NULL-Wert, so gelten zwei Zeilen, die in allen Nicht-NULL-Spalten den gleichen Wert besitzen, als identisch.
Die Indexwerte werden in aufsteigender oder absteigender Reihenfolge abgelegt. Fehlt die Angabe von ASC oder DESC, dann wird implizit ASC angenommen.