View a markdown version of this page

CREATE INDEX - Amazon Aurora DSQL

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CREATE INDEX

CREATE INDEXdefiniert einen neuen Index. In Aurora DSQL erfolgt die Indexerstellung immer asynchron, daher müssen Sie das Schlüsselwort angeben. ASYNC Informationen darüber, wie Aurora DSQL asynchrone Index-Builds ausführt und wie diese überwacht werden, finden Sie unter. Asynchrone Indizes in Aurora DSQL

Unterstützte Syntax

CREATE [ UNIQUE ] INDEX ASYNC [ [ IF NOT EXISTS ] name ] ON table_name ( { column_name | ( expression ) } [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ NULLS [ NOT ] DISTINCT ]

Description

CREATE INDEXerstellt einen Index für die angegebenen Spalten der angegebenen Tabelle. Indizes werden in erster Linie verwendet, um die Datenbankleistung zu verbessern, obwohl eine unangemessene Verwendung zu einer langsameren Leistung führen kann.

Sie geben die Schlüsselfelder für den Index als Spaltennamen oder alternativ als Ausdrücke in Klammern an. Sie können mehrere Felder angeben, um einen mehrspaltigen Index zu erstellen.

Ein Indexfeld kann ein Ausdruck sein, der aus den Werten einer oder mehrerer Spalten der Tabellenzeile berechnet wird. Verwenden Sie diese Funktion, um einen schnellen Zugriff auf Daten zu erhalten, die auf einer Transformation der Basisdaten basieren. Ein Index, auf dessen Grundlage berechnet wurde, upper(col) ermöglicht es der Klausel beispielsweise, einen Index WHERE upper(col) = 'JIM' zu verwenden.

Alle in einer Indexdefinition verwendeten Funktionen und Operatoren müssen unveränderlich sein. Das heißt, ihre Ergebnisse dürfen nur von ihren Argumenten abhängen und niemals von äußeren Einflüssen wie dem Inhalt einer anderen Tabelle oder der aktuellen Uhrzeit. Diese Einschränkung stellt sicher, dass das Verhalten des Indexes genau definiert ist. Wenn Sie eine benutzerdefinierte Funktion in einem Indexausdruck verwenden möchten, denken Sie daran, die Funktion zu markieren, IMMUTABLE wenn Sie sie erstellen.

Parameters

UNIQUE

Bewirkt, dass das System bei der Erstellung des Indexes, wenn bereits Daten vorhanden sind und jedes Mal, wenn Sie Daten hinzufügen, nach doppelten Werten in der Tabelle sucht. Versuche, Daten einzufügen oder zu aktualisieren, die zu doppelten Einträgen führen würden, führen zu einem Fehler.

IF NOT EXISTS

Gibt keinen Fehler aus, wenn bereits eine Beziehung mit demselben Namen existiert. In diesem Fall wird eine Mitteilung ausgegeben. Beachten Sie, dass nicht garantiert werden kann, dass der vorhandene Index dem Index ähnelt, der erstellt worden wäre. Der Indexname ist erforderlich, wenn er angegeben IF NOT EXISTS wird.

INCLUDE

Die optionale INCLUDE Klausel gibt eine Liste von Spalten an, die als Nichtschlüsselspalten in den Index aufgenommen werden sollen. Sie können keine Nichtschlüsselspalte in einer Indexscan-Suchqualifikation verwenden, und Aurora DSQL ignoriert sie aus Gründen der Eindeutigkeit oder Ausschlusseinschränkungen, die der Index durchsetzt. Ein reiner Index-Scan kann jedoch den Inhalt von Nichtschlüsselspalten zurückgeben, ohne dass Sie die Indextabelle aufrufen müssen, da diese direkt im Indexeintrag verfügbar sind. Das Hinzufügen von Spalten, die keine Schlüsselspalten sind, ermöglicht daher reine Index-Scans nach Abfragen, die sie sonst nicht verwenden könnten.

Ausdrücke werden als eingeschlossene Spalten nicht unterstützt, da sie nicht in reinen Index-Scans verwendet werden können.

name

Der Name des zu erstellenden Indexes. Sie können hier keinen Schemanamen angeben. Aurora DSQL erstellt den Index immer im gleichen Schema wie die übergeordnete Tabelle. Der Name des Indexes muss sich von dem Namen jeder anderen Beziehung in diesem Schema unterscheiden, z. B. einer Tabelle, Sequenz, einem Index oder einer Ansicht. Wenn Sie den Namen weglassen, wählt Aurora DSQL einen geeigneten Namen, der auf dem Namen der übergeordneten Tabelle und den indizierten Spaltennamen basiert.

table_name

Der Name, optional schemaqualifiziert, der zu indizierenden Tabelle.

column_name

Der Name einer Spalte der Tabelle.

expression

Ein Ausdruck, der auf einer oder mehreren Spalten der Tabelle basiert. Normalerweise müssen Sie den Ausdruck mit umgebenden Klammern schreiben, wie in der Syntax gezeigt. Sie können die Klammern jedoch weglassen, wenn der Ausdruck die Form eines Funktionsaufrufs hat.

NULLS FIRST

Gibt an, dass Nullen vor Nullen sortiert werden, die keine Nullen sind.

NULLS LAST

Gibt an, dass Nullen nach Nicht-Nullen sortiert werden.

NULLS DISTINCT
NULLS NOT DISTINCT

Gibt an, ob Nullwerte für einen eindeutigen Index als unterschiedlich, d. h. als ungleich, betrachtet werden. In der Standardeinstellung sind sie unterschiedlich, sodass ein eindeutiger Index mehrere Nullwerte in einer Spalte enthalten kann.

Beispiele

Um einen eindeutigen Index für die Spalte title in der Tabelle zu erstellenfilms.

CREATE UNIQUE INDEX ASYNC title_idx ON films (title);

Um einen eindeutigen Index für die Spalte title mit den enthaltenen Spalten director und rating in der Tabelle zu erstellenfilms.

CREATE UNIQUE INDEX ASYNC title_idx ON films (title) INCLUDE (director, rating);

Um einen Index für den Ausdruck zu erstellenlower(title), der effiziente Suchen ohne Berücksichtigung der Groß- und Kleinschreibung ermöglicht.

CREATE INDEX ASYNC ON films ((lower(title)));

In diesem Beispiel wird der Indexname weggelassen, sodass Aurora DSQL in der Regel einen Namen auswählt. films_lower_idx

Um einen Index mit einer nicht standardmäßigen Sortierreihenfolge von Nullen zu erstellen.

CREATE INDEX ASYNC title_idx_nulls_low ON films (title NULLS FIRST);