CREATE INDEX erzeugt einen Index für eine Basistabelle. Der Index kann von SESAM/SQL verwendet werden, um Bedingungen auf einer oder mehreren Spalten des Index ohne Zugriff auf die Basistabelle auszuwerten oder um die Sätze der Tabelle in der Reihenfolge der Werte der Indexspalten auszugeben.
Die für CALL-DML-Tabellen geltenden Einschränkungen und Besonderheiten sind im Abschnitt „Besonderheiten für CALL-DML-Tabellen" beschrieben.
Der aktuelle Berechtigungsschlüssel muss Eigentümer des Schemas sein, zu dem die Basistabelle gehört.
Wird der Space für den Index angegeben, muss der aktuelle Berechtigungsschlüssel Eigentümer des Space sein.
CREATE INDEX
indexdefinition ,...ON TABLE
tabelle [USING SPACE
space ]
indexdefinition ::=
index ({
spalte [LENGTH
länge ]},...)
indexdefinition
Definition eines oder mehrerer Indizes.
Wenn ein Index nur eine Spalte umfasst, darf diese Spalte nicht länger als 256 Zeichen sein. Umfasst der Index mehrere Spalten, darf die Summe der Spaltenlängen plus die Gesamtzahl der Spalten 256 nicht überschreiten.
index
Name des neuen Index. Der einfache Indexname muss innerhalb des Schemas eindeutig sein. Der Indexname kann durch einen Datenbank- und Schemanamen qualifiziert werden. Datenbank- und Schemaname müssen mit dem Datenbank- und Schemanamen der Basistabelle übereinstimmen, für die der Index erzeugt wird.
Wenn Sie die CREATE INDEX-Anweisung innerhalb einer CREATE SCHEMA-Anweisung verwenden, dürfen Sie den Indexnamen nur mit den Datenbank- und Schemanamen aus der CREATE SCHEMA-Anweisung qualifizieren.
spalte
Name der Spalte der Basistabelle, die zum Index gehören soll.
Eine Spalte darf nicht mehrmals im gleichen Index auftreten. Sie können mehrere Spalten für einen Index angeben (=zusammengesetzter Index). In diesem Fall darf der Index keine multiplen Spalten enthalten.
LENGTH länge
Gibt an, bis zu welcher Länge die Spalte in den Index einbezogen werden soll. länge muss eine vorzeichenlose Ganzzahl von 1 bis zur Spaltenlänge in Bytes sein. Sie dürfen die Länge nur für folgende Datentypen der Spalte einschränken: CHAR, VARCHAR, NCHAR und NVARCHAR oder Datentypen von SESAM bis V12.
LENGTH länge nicht angegeben:
Die Spalte wird in ihrer ganzen Länge in Bytes in den Index einbezogen.
ON TABLE tabelle
Name der Basistabelle, für die ein Index definiert wird.
Bei expliziter Qualifikation des einfachen Tabellennamens mit einem Datenbank- und Schemanamen muss diese mit dem Datenbank- und Schemanamen des Index übereinstimmen.
Wenn Sie die CREATE INDEX-Anweisung innerhalb einer CREATE SCHEMA-Anweisung verwenden, dürfen Sie den Tabellennamen nur dann mit dem Datenbank- und Schemanamen qualifizieren, wenn diese mit dem Datenbank- und Schemanamen der CREATE SCHEMA-Anweisung übereinstimmen.
USING SPACE space
Name des Space, in dem der Index gespeichert werden soll.
Der einfache Spacename kann mit dem Datenbanknamen qualifiziert werden. Dieser Datenbankname muss mit dem Datenbanknamen der Basistabelle übereinstimmen.
Der Space muss bereits für die Datenbank, zu der die Tabelle gehört, definiert sein. Der aktuelle Berechtigungsschlüssel muss Eigentümer des Space sein.
USING SPACE space nicht angegeben:
Der Index wird im Space der Basistabelle gespeichert. Bei einer partitionierten Tabelle wird der Index auf dem Space der ersten Partition gespeichert.
Besonderheiten für CALL-DML-Tabellen
Bei der CREATE INDEX-Anweisung müssen für CALL-DML-Tabellen folgende Einschränkungen und Besonderheiten berücksichtigt werden:
Jeder Index darf nur eine Spalte enthalten.
Jede Spalte darf nur einmal in einem Index auftreten.
Als Spaltenname im Index darf der Name der Primärschlüsselbedingung einer Datenbank mit Compound Key angegeben werden. Dadurch wird ein Index über den Primärschlüssel gelegt.
Index und Integritätsbedingung
Wenn für eine Tabelle die Integritätsbedingung UNIQUE definiert ist, wird dadurch implizit ein Index mit den bei UNIQUE angegebenen Spalten definiert. Wenn Sie mit CREATE INDEX explizit einen Index definieren, der dieselben Spalten enthält, so wird der implizit definierte Index gelöscht. Der explizite Index wird zusätzlich für die Integritätsbedingung verwendet.
Beispiele
Das folgende Beispiel erzeugt einen zusammengesetzten Index für die Spalten KNR und FIRMA der Tabelle KUNDE. Die Spalte FIRMA wird dabei bis zu einer Länge von 10 Zeichen in den Index einbezogen. Der Index wird auf dem Space INDEXSPACE gespeichert.
CREATE INDEX kund_ind (knr,firma LENGTH 10)
ON TABLE kunde USING SPACE indexspace
Mit der CREATE INDEX-Anweisung wird der Index NAT_KUND_IND für die Spalten NAT_KNR und NAT_FIRMA der Tabelle NAT_KUNDE definiert. Die Spalte NAT_FIRMA hat den National-Datentyp NCHAR. Werte der Spalte NAT_FIRMA werden bis zu einer Länge von 5 Zeichen bei der Indexbildung berücksichtigt (1 Zeichen = 2 Byte). Der Index soll auf dem Space NAT_INDEXSPACE angelegt werden.
CREATE INDEX nat_kund_ind(nat_knr, nat_firma LENGTH 10)
ON TABLE nat_kunde USING SPACE nat_indexspace
Siehe auch
DROP INDEX