

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.

# Verwalten von Indexen
<a name="working.manage-indexes"></a>

**Wichtig**  
Hinweis zum Ende des Supports: Bestandskunden können Amazon QLDB bis zum Ende des Supports am 31.07.2025 nutzen. Weitere Informationen finden Sie unter [Migrieren eines Amazon QLDB-Ledgers zu Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

In diesem Abschnitt wird beschrieben, wie Indizes in Amazon QLDB erstellt, beschrieben und gelöscht werden. Das Kontingent für die Anzahl der Indizes pro Tabelle, die Sie erstellen können, ist in definiert. [Kontingente und Limits in Amazon QLDB](limits.md#limits.fixed)

**Topics**
+ [Erstellen von Indizes](#working.manage-indexes.create)
+ [Beschreiben von Indizes](#working.manage-indexes.describe)
+ [Indizes löschen](#working.manage-indexes.drop)
+ [Häufige Fehler](#working.manage-indexes.errors)

## Erstellen von Indizes
<a name="working.manage-indexes.create"></a>

Wie auch unter beschrieben[Tabellen und Indizes erstellen](working.create.md#working.create.tables-indexes), können Sie die [CREATE INDEX-Anweisung](ql-reference.create-index.md) verwenden, um einen Index für eine Tabelle für ein bestimmtes Feld der obersten Ebene wie folgt zu erstellen. Sowohl beim Tabellennamen als auch beim Namen des indizierten Feldes wird zwischen Groß- und Kleinschreibung unterschieden.

```
CREATE INDEX ON VehicleRegistration (VIN)
```

```
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
```

Jeder Index, den Sie für eine Tabelle erstellen, hat eine vom System zugewiesene eindeutige ID. Informationen zur Suche nach dieser Index-ID finden Sie im folgenden Abschnitt. [Beschreiben von Indizes](#working.manage-indexes.describe) 

**Wichtig**  
QLDB benötigt einen Index, um ein Dokument effizient nachschlagen zu können. Ohne Index muss QLDB beim Lesen von Dokumenten einen vollständigen Tabellenscan durchführen. Dies kann bei großen Tabellen zu Leistungsproblemen führen, einschließlich Parallelitätskonflikten und Transaktions-Timeouts.  
Um Tabellenscans zu vermeiden, müssen Sie Anweisungen mit einer `WHERE` Prädikatklausel mithilfe eines *Gleichheitsoperators* (`=`oder`IN`) für ein indiziertes Feld oder eine Dokument-ID ausführen. Weitere Informationen finden Sie unter [Optimieren der Abfrageleistung](working.optimize.md).

Beachten Sie beim Erstellen von Indizes die folgenden Einschränkungen:
+ Ein Index kann nur für ein einzelnes Feld der obersten Ebene erstellt werden. Zusammengesetzte, verschachtelte, eindeutige und funktionsbasierte Indizes werden nicht unterstützt.
+ Sie können einen Index für alle [Ion-Datentypen erstellen, einschließlich](ql-reference.data-types.md) und. `list` `struct` Sie können die indizierte Suche jedoch nur nach Gleichheit des gesamten Ionen-Werts durchführen, unabhängig vom Ionentyp. Wenn Sie beispielsweise einen `list` Typ als Index verwenden, können Sie keine indizierte Suche nach einem Element in der Liste durchführen.
+ Die Abfrageleistung wird nur verbessert, wenn Sie ein Gleichheitsprädikat verwenden, `WHERE indexedField = 123` z. B. oder. `WHERE indexedField IN (456, 789)`

  QLDB berücksichtigt keine Ungleichheiten in Abfrageprädikaten. Aus diesem Grund werden bereichsgefilterte Scans nicht implementiert.
+ Bei Namen indizierter Felder wird zwischen Groß- und Kleinschreibung unterschieden und sie können maximal 128 Zeichen lang sein.
+ Die Indexerstellung in QLDB ist asynchron. Die Zeit, die benötigt wird, um die Erstellung eines Indexes für eine nicht leere Tabelle abzuschließen, hängt von der Tabellengröße ab. Weitere Informationen finden Sie unter [Verwalten von Indexen](#working.manage-indexes).

## Beschreiben von Indizes
<a name="working.manage-indexes.describe"></a>

Die Indexerstellung in QLDB ist asynchron. Die Zeit, die benötigt wird, um die Erstellung eines Indexes für eine nicht leere Tabelle abzuschließen, hängt von der Tabellengröße ab. Um den Status einer Indexerstellung zu überprüfen, können Sie die Systemkatalogtabelle [information\$1schema.user\$1tables](working.catalog.md) abfragen.

Mit der folgenden Anweisung wird beispielsweise der Systemkatalog nach allen Indizes in der Tabelle abgefragt. `VehicleRegistration`

```
SELECT VALUE indexes
FROM information_schema.user_tables info, info.indexes indexes
WHERE info.name = 'VehicleRegistration'
```

```
{
    indexId: "Djg2nt0yIs2GY0T29Kud1z",
    expr: "[VIN]",
    status: "ONLINE"
},
{
    indexId: "4tPW3fUhaVhDinRgKRLhGU",
    expr: "[LicensePlateNumber]",
    status: "FAILED",
    message: "aws.ledger.errors.InvalidEntityError: Document contains multiple values for indexed field: LicensePlateNumber"
}
```

**Indexfelder**
+ `indexId`— Die eindeutige ID des Indexes.
+ `expr`— Der indizierte Dokumentpfad. Dieses Feld ist eine Zeichenfolge in der Form:`[fieldName]`.
+ `status`— Der aktuelle Status des Index. Der Status eines Indexes kann einer der folgenden Werte sein:
  + `BUILDING`— Erstellt aktiv den Index für die Tabelle.
  + `FINALIZING`— Hat die Erstellung des Indexes abgeschlossen und beginnt, ihn für die Verwendung zu aktivieren.
  + `ONLINE`— Ist aktiv und kann in Abfragen verwendet werden. QLDB verwendet den Index erst in Abfragen, wenn der Status online ist.
  + `FAILED`— Der Index kann aufgrund eines nicht behebbaren Fehlers nicht erstellt werden. Indizes in diesem Status werden immer noch auf Ihr Indexkontingent pro Tabelle angerechnet. Weitere Informationen finden Sie unter [Häufige Fehler](#working.manage-indexes.errors).
  + `DELETING`— Löscht aktiv den Index, nachdem ein Benutzer ihn gelöscht hat.
+ `message`— Die Fehlermeldung, die den Grund beschreibt, warum der Index einen `FAILED` Status hat. Dieses Feld ist nur für fehlgeschlagene Indizes enthalten.

### Verwenden der Konsole
<a name="working.manage-indexes.describe.con"></a>

Sie können den auch verwenden AWS-Managementkonsole , um den Status eines Indexes zu überprüfen.

**Um den Status eines Indexes zu überprüfen (Konsole)**

1. [Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon QLDB-Konsole unter https://console.aws.amazon.com /qldb.](https://console.aws.amazon.com/qldb)

1. Wählen Sie im Navigationsbereich **Ledgers** aus.

1. Wählen Sie in der Liste der **Ledger** den Ledger-Namen aus, dessen Indizes Sie verwalten möchten.

1. Wählen Sie auf der Seite mit den Ledger-Details auf der Registerkarte **Tabellen** den Tabellennamen aus, dessen Index Sie überprüfen möchten.

1. Suchen Sie auf der Seite mit den Tabellendetails die Karte **Indizierte Felder**. In der Spalte **Indexstatus** wird der aktuelle Status jedes Indexes in der Tabelle angezeigt.

## Indizes löschen
<a name="working.manage-indexes.drop"></a>

Verwenden Sie die [DROP INDEX](ql-reference.drop-index.md) Anweisung, um einen Index zu löschen. Wenn Sie einen Index löschen, wird er dauerhaft aus der Tabelle gelöscht.

Suchen Sie zunächst die Index-ID von`information_schema.user_tables`. Die folgende Abfrage gibt beispielsweise den Wert `indexId` des indizierten `LicensePlateNumber` Felds in der `VehicleRegistration` Tabelle zurück.

```
SELECT indexes.indexId
FROM information_schema.user_tables info, info.indexes indexes
WHERE info.name = 'VehicleRegistration' and indexes.expr = '[LicensePlateNumber]'
```

Verwenden Sie dann diese ID, um den Index zu löschen. Im Folgenden finden Sie ein Beispiel, bei dem die Index-ID gelöscht wird`4tPW3fUhaVhDinRgKRLhGU`. Die Index-ID ist ein eindeutiger Bezeichner, der in doppelte Anführungszeichen eingeschlossen werden sollte.

```
DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
```

**Anmerkung**  
Die Klausel `WITH (purge = true)` ist für alle `DROP INDEX` Anweisungen erforderlich und `true` ist derzeit der einzige unterstützte Wert.  
Das Schlüsselwort `purge` unterscheidet zwischen Groß- und Kleinschreibung und muss ausschließlich aus Kleinbuchstaben bestehen.

### Verwenden der Konsole
<a name="working.manage-indexes.drop.con"></a>

Sie können den auch verwenden AWS-Managementkonsole , um einen Index zu löschen.

**Um einen Index zu löschen (Konsole)**

1. [Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon QLDB-Konsole unter https://console.aws.amazon.com /qldb.](https://console.aws.amazon.com/qldb)

1. Wählen Sie im Navigationsbereich **Ledgers** aus.

1. Wählen Sie in der Liste der **Ledger** den Ledger-Namen aus, dessen Indizes Sie verwalten möchten.

1. Wählen Sie auf der Seite mit den Ledger-Details auf der Registerkarte **Tabellen** den Tabellennamen aus, dessen Index Sie löschen möchten.

1. Suchen Sie auf der Seite mit den Tabellendetails die Karte **Indizierte Felder**. Wählen Sie den Index aus, den Sie löschen möchten, und wählen Sie dann **Index löschen** aus.

## Häufige Fehler
<a name="working.manage-indexes.errors"></a>

In diesem Abschnitt werden häufig auftretende Fehler beschrieben, die beim Erstellen von Indizes auftreten können, und es werden mögliche Lösungen vorgeschlagen.

**Anmerkung**  
Indizes mit dem Status „`FAILED`Immer noch“ werden auf Ihr Indexkontingent pro Tabelle angerechnet. Ein fehlgeschlagener Index verhindert auch, dass Sie Dokumente ändern oder löschen, die dazu geführt haben, dass die Indexerstellung für die Tabelle fehlgeschlagen ist.  
Sie müssen den Index explizit [löschen](#working.manage-indexes.drop), um ihn aus dem Kontingent zu entfernen.

**Das Dokument enthält mehrere Werte für das indizierte Feld:*fieldName*.**  
QLDB kann keinen Index für den angegebenen Feldnamen erstellen, da die Tabelle ein Dokument mit mehreren Werten für dasselbe Feld enthält (d. h. doppelte Feldnamen).  
Sie müssen zuerst den fehlgeschlagenen Index löschen. Stellen Sie dann sicher, dass alle Dokumente in der Tabelle nur einen Wert für jeden Feldnamen haben, bevor Sie erneut versuchen, den Index zu erstellen. Sie können auch einen Index für ein anderes Feld erstellen, das keine Duplikate enthält.  
QLDB gibt diesen Fehler auch zurück, wenn Sie versuchen, ein Dokument einzufügen, das mehrere Werte für ein Feld enthält, das bereits in der Tabelle indexiert ist.

**Indexlimit überschritten: Die Tabelle hat *tableName* bereits Indizes und es können keine *n* weiteren erstellt werden.**  
QLDB erzwingt ein Limit von fünf Indizes pro Tabelle, einschließlich fehlgeschlagener Indizes. Sie müssen einen vorhandenen Index löschen, bevor Sie einen neuen erstellen können.

**Kein definierter Index mit ID:*indexId*.**  
Sie haben versucht, einen Index zu löschen, der für die angegebene Kombination aus Tabelle und Index-ID nicht existiert. Informationen zum Überprüfen vorhandener Indizes finden Sie unter[Beschreiben von Indizes](#working.manage-indexes.describe).