## Indizes

Da in einer Tabelle alle Spalten gleich behandelt werden, ist jede Spalte als Suchkriterium verwendbar. Das bedeutet aber nicht, dass die Suchvorgänge gleich effizient sind.

Wenn eine Spalte bevorzugt für die Abarbeitung von Suchbedingungen verwendet wird, sollten Sie für diese Spalte einen Index erzeugen. Dadurch können Sie die gewünschten Zeilen schneller finden, da das Datenbanksystem versucht, Indizes für die Suche von Einträgen zu verwenden.

### Voraussetzungen

Sie benötigen die Demo-Daten für das SQL-Tutorial.

Starten Sie das Query Tool SQL Studio als Datenbankadministrator MONA mit dem Kennwort RED und melden Sie sich an die Demo-Datenbankinstanz DEMODB an.

### Anlegen eines Index

Zum Anlegen eines Index verwenden Sie die CREATE INDEX-Anweisung.

CREATE INDEX hotel.name_index ON hotel.customer (name)

Mit dieser Anweisung legen Sie einen einspaltigen Index mit dem Namen name_index im Schema hotel an.

CREATE INDEX hotel.city_state ON hotel.city (state)

Mit dieser Anweisung legen Sie einen einspaltigen Index mit dem Namen city_state an.

CREATE INDEX hotel.full_name_index ON hotel.customer (name,firstname)

Mit dieser Anweisung legen Sie einen zweispaltigen Index mit dem Namen full_name_index an.

Wenn Sie einen Index erzeugen wollen, der ähnlich dem Schlüssel eine Eindeutigkeit gewährleistet, müssen Sie das Schlüsselwort UNIQUE verwenden.

CREATE UNIQUE INDEX address_index ON hotel.customer (firstname,name,address)

Siehe auch:

SQL-Referenzhandbuch, CREATE INDEX-Anweisung (create_index_statement)

Die Definition eines UNIQUE-Index kann gleichzeitig mit der Tabellendefinition mit Hilfe der CREATE TABLE-Anweisung erfolgen.

...

1. Löschen Sie gegebenenfalls die Tabelle person.
DROP TABLE hotel.person

2. Legen Sie die Tabelle person an.
CREATE TABLE hotel.person
(pno FIXED(6) PRIMARY KEY,
name CHAR(20) CONSTRAINT name_index UNIQUE,
city CHAR(20))

Mit dieser Anweisung legen Sie einen einspaltigen UNIQUE-Index mit dem Namen name_index an.

1. Löschen Sie die Tabelle person.
DROP TABLE hotel.person

2. Legen Sie die Tabelle person an.
CREATE TABLE hotel.person
(pno FIXED(6) PRIMARY KEY,
name CHAR(20),
city CHAR(20),
CONSTRAINT address_index UNIQUE (name,city))

Mit dieser Anweisung legen Sie einen zweispaltigen UNIQUE-Index mit dem Namen address_index an.

Siehe auch:

SQL-Referenzhandbuch, CREATE TABLE-Anweisung (create_table_statement)

SQL-Referenzhandbuch, UNIQUE-Definition (unique_definition)

### Löschen eines Index

Zum Löschen eines Index verwenden Sie die DROP INDEX-Anweisung:

DROP INDEX hotel.full_name_index ON hotel.customer

Mit Hilfe dieser SQL-Anweisung löschen Sie die Indexdefinition und damit die Daten, die im Index gehalten wurden. Die Tabelleninhalte werden dabei nicht berührt.

Siehe auch:

SQL-Referenzhandbuch, DROP INDEX-Anweisung (drop_index_statement)

Weitere Beispiele zur Datendefinition