Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » UltraLite - Datenbankverwaltung » UltraLite-SQL-Referenz » UltraLite-SQL-Anweisungen

 

UltraLite CREATE INDEX-Anweisung

Mit dieser Anweisung erstellen Sie einen Index für eine angegebene Tabelle.

Syntax
CREATE [ UNIQUE ] INDEX [ Indexname ]
ON Tabellenname ( sortierte_Spaltenliste ) 
[ WITH MAX HASH SIZE Integer ]
sortierte_Spaltenliste :
( Spaltenname [ ASC | DESC ], ... )
Parameter

UNIQUE   Der Parameter UNIQUE stellt sicher, dass es in der Tabelle keine zwei Zeilen mit identischen Werten in allen Spalten des Indexes gibt. Jeder Indexschlüssel muss eindeutig sein oder NULL in mindestens einer Spalte enthalten.

Es besteht ein Unterschied zwischen einer Eindeutigkeits-Integritätsregel in einer Tabelle und einem eindeutigen Index. Spalten in einem eindeutigen Index lassen NULL zu, nicht aber Spalten in einer Eindeutigkeits-Integritätsregel. Außerdem kann ein Fremdschlüssel entweder einen Primärschlüssel oder eine Spalte mit einer Eindeutigkeits-Integritätsregel referenzieren. Ein Fremdschlüssel kann jedoch nicht einen eindeutigen Index referenzieren.

sortierte_Spaltenliste   Eine sortierte Liste von Spalten. Spaltenwerte im Index können in aufsteigender oder absteigender Reihenfolge sortiert werden.

WITH MAX HASH SIZE   Legt die Hash-Größe (in Byte) für diesen Index fest. Dieser Wert setzt den Standardwert der Eigenschaft MaxHashSize außer Kraft, der für die Datenbank gilt. Hinweise zur Standardgröße finden Sie unter Auf UltraLite-Datenbankeigenschaften zugreifen.

Bemerkungen

UltraLite erstellt automatisch Indizes für Primärschlüssel und Eindeutigkeits-Integritätsregeln.

Indizes können die Abfrageperformance steigern, indem sie es UltraLite ermöglichen, bestimmte Zeilen schnell zu finden. Im Gegensatz dazu können Indizes die Synchronisation sowie INSERT-, DELETE- und UPDATE-Anweisungen verlangsamen, da sie verwaltet werden müssen.

Indizes werden automatisch verwendet, um die Performance von Abfragen zu verbessern, die von der Datenbank ausgegeben werden, und um Abfragen mithilfe einer ORDER BY-Klausel zu sortieren. Sobald ein Index erstellt wurde, wird er nie wieder in einer SQL-Anweisung referenziert, außer wenn er mit DROP INDEX gelöscht wird.

Indizes brauchen Speicherplatz in der Datenbank. Der zusätzliche Aufwand für die Verwaltung der Indizes kann die Performance der Datenänderungsvorgänge beeinträchtigen. Aus diesem Grund sollten Sie nur Indizes erstellen, die die Abfrageperformance verbessern.

UltraLite verarbeitet keine Anforderungen oder Abfragen, die die Tabelle referenzieren, während die Anweisung CREATE INDEX ausgeführt wird. Außerdem ist es nicht möglich, CREATE INDEX auszuführen, wenn die Datenbank aktive Abfragen oder nicht festgeschriebene Transaktionen enthält.

UltraLite kann auch Ausführungspläne zur Optimierung von Abfragen verwenden. Weitere Hinweise finden Sie unter Ausführungspläne in UltraLite.

Für UltraLite.NET-Benutzer: Sie können diese Anweisung nur ausführen, wenn Sie auch die Dispose-Methode für alle Datenobjekte ausführen (z.B. ULDataReader). Weitere Hinweise finden Sie unter Dispose-Methode.

Anweisungen werden nicht freigegeben, wenn gleichzeitig Schemaänderungen initiiert werden. Weitere Hinweise finden Sie unter Schemaänderungen mit DDL-Anweisungen.

Nebenwirkungen
Siehe auch
Beispiel

Im folgenden Beispiel wird ein zweispaltiger Index für die Tabelle Employee erstellt.

CREATE INDEX employee_name_index
ON Employees ( Surname, GivenName );

Die folgende Anweisung erstellt einen Index auf der SalesOrderItems-Tabelle für die ProductID-Spalte.

CREATE INDEX item_prod
ON SalesOrderItems ( ProductID );