Indexe – Übersicht
Auf dieser Seite wird die Indexierung für Firestore mit MongoDB-Kompatibilität beschrieben. Bei Firestore mit MongoDB-Kompatibilität werden standardmäßig keine Indexe erstellt. Um die Datenbankleistung zu verbessern, erstellen Sie Indexe für Ihre am häufigsten verwendeten Abfragen.
Indexe haben einen großen Einfluss auf die Leistung einer Datenbank. Wenn ein Index für eine Abfrage vorhanden ist, kann die Datenbank effizient Ergebnisse zurückgeben, indem die Menge der zu scannenden Daten und der Aufwand zum Sortieren der Ergebnisse reduziert werden. Indexeinträge erhöhen jedoch die Speicherkosten und den Arbeitsaufwand bei Schreibvorgängen für indexierte Felder.
Indexdefinition und -struktur
Ein Index besteht aus Folgendem:
- eine Sammlungs-ID
- eine Liste der Felder in der angegebenen Sammlung
- eine aufsteigende oder absteigende Reihenfolge für jedes Feld
Für einen Index können auch die Optionen sparse und multikey aktiviert werden.
Indexreihenfolge
Die Reihenfolge und Sortierrichtung der einzelnen Felder definieren den Index eindeutig. Die folgenden Indexe sind beispielsweise zwei unterschiedliche Indexe und nicht austauschbar:
Sammlung | Felder |
---|---|
Städte | Land (aufsteigend), Bevölkerung (absteigend) |
Städte | Bevölkerung (absteigend), Land (aufsteigend) |
Wenn Sie einen Index zur Unterstützung einer Abfrage erstellen, müssen Sie die Felder in derselben Reihenfolge wie in der Abfrage angeben.
Indexdichte
Standardmäßig werden in Indexeinträgen Daten aus allen Dokumenten in einer Sammlung gespeichert. Das wird als nicht spärlicher Index bezeichnet. Für ein Dokument wird ein Indexeintrag hinzugefügt, unabhängig davon, ob das Dokument eines der im Index angegebenen Felder enthält. Nicht vorhandene Felder werden beim Generieren von Indexeinträgen als NULL-Werte behandelt. Um dieses Verhalten zu ändern, können Sie den Index als Sparse-Index definieren.
Dünnbesetzte Indexe
Ein dünnbesetzter Index indexiert nur die Dokumente in der Sammlung, die einen Wert (einschließlich Null) für mindestens eines der indexierten Felder enthalten. Ein Sparse-Index senkt die Speicherkosten und kann die Leistung verbessern.
Indexe mit mehreren Schlüsseln für Arraywerte
Wenn Sie einen Index für ein Feld erstellen, das Arraywerte enthält, müssen Sie einen Index mit mehreren Schlüsseln erstellen. Mit einem regulären Index können keine Arraywerte indexiert werden. Ein Index mit mehreren Schlüsseln unterstützt bis zu einem Arrayfeld in der Indexdefinition und kann für Vorgänge verwendet werden, die Arraywerte durchlaufen.
Verwenden Sie Indexe mit mehreren Schlüsseln nur, wenn Sie Arraywerte indexieren müssen. Reguläre Indexe haben Vorteile bei der Verarbeitung einer Abfrage. Mit regulären Indexen lassen sich Werte in einem Bereich beispielsweise effizienter filtern.
Die folgenden Situationen führen zu Fehlern bei der Arbeit mit Arraywerten und Indexen mit mehreren Schlüsseln:
- Bei einem Vorgang wird versucht, einem Feld, das durch einen regulären Index indexiert wird, einen Arraywert hinzuzufügen. Wenn Sie den Arraywert hinzufügen möchten, müssen Sie die vorhandenen regulären Indexe für dieses Feld löschen und als Multikey-Indexe neu erstellen.
- Sie versuchen, einen regulären Index für ein Feld zu erstellen, das einen Arraywert enthält. Sie müssen entweder einen Index mit mehreren Schlüsseln erstellen oder die Arraywerte löschen.
- Bei einem Vorgang wird versucht, mehrere Felder mit Arraywerten zu indexieren. In einem Index mit mehreren Schlüsseln darf es nur ein Feld mit einem Arraywert geben. Ändern Sie Ihr Datenmodell oder Ihre Indexdefinitionen, um fortzufahren.
- Sie versuchen, einen Index mit mehreren Schlüsseln zu erstellen, bei dem zwei Feldpfade ein gemeinsames Präfix wie
users.posts
undusers.zip
haben.
Fehler bei der Indexerstellung beheben
Bei der Verwaltung von Indexen kann es zu Fehlern bei der Indexerstellung kommen. Ein Indexierungsvorgang kann fehlschlagen, wenn in der Datenbank ein Problem mit den Daten auftritt. Indexierungsvorgänge können aus folgenden Gründen fehlschlagen:
- Sie haben ein Indexlimit erreicht. Beispielsweise hat der Vorgang möglicherweise die maximale Anzahl von Indexeinträgen pro Dokument erreicht. Wenn die Indexerstellung fehlschlägt, wird eine Fehlermeldung angezeigt. Wenn Sie kein Indexlimit erreicht haben, wiederholen Sie den Indexierungsvorgang.
- Ein Index mit mehreren Schlüsseln ist erforderlich. Mindestens eines der indexierten Felder enthält einen Arraywert. Um fortzufahren, müssen Sie entweder einen Index mit mehreren Schlüsseln verwenden oder die Arraywerte löschen.
- Bei einem Vorgang wird versucht, mehrere Felder mit Arraywerten zu indexieren. In einem Index mit mehreren Schlüsseln darf es nur ein Feld mit einem Arraywert geben. Ändern Sie Ihr Datenmodell oder Ihre Indexdefinitionen, um fortzufahren.