Indizes

Prev Next

Ein Index ist eine Nachschlagestruktur, die die Datenbank zusätzlich zu einer Tabelle vorhält, um Datensätze schnell zu finden – vergleichbar mit dem Stichwortverzeichnis am Ende eines Buches.

Ohne Index muss die Datenbank für eine Abfrage wie „alle Positionen der Sendung 4711“ jede Zeile der Tabelle prüfen (vollständiger Tabellen-Scan). Bei wenigen Datensätzen ist das unproblematisch, bei Millionen von Zeilen wird es langsam. Ein Index über das Feld shipment hält eine sortierte Liste der Sendungs-IDs vor, über die die Datenbank direkt zu den passenden Zeilen springt.

Einstellungen

Indizes können bei den folgenden Typdefinitionen angelegt werden: Eigener Entitätstyp, Eigenes singuläres Attribut, Eigenes plurales Attribut und Eigenes typisiertes Attribut, Eigene referenzierte Entität.

Name

Beschreibung

Name

Der Name des Index. Der Editor ergänzt automatisch das Präfix idx; den übrigen Namen vergeben Sie in lowerCamelCase, zum Beispiel idxShipment.

Eindeutig

Ist diese Option aktiviert, lässt die Datenbank keine zwei Datensätze mit denselben Werten in den indizierten Feldern zu. Ein eindeutiger Index über (shipment, positionNumber) verhindert beispielsweise, dass eine Sendung zweimal dieselbe Positionsnummer enthält. Eindeutige Indizes dienen damit nicht nur der Geschwindigkeit, sondern auch der Durchsetzung fachlicher Regeln.

Feld zur Indizierung

Ein oder mehrere Felder, die der Index umfasst. Die Reihenfolge der Felder ist relevant (siehe /v1/docs/custom-type-indexes#wann-sinnvoll).

Wann ein Index sinnvoll ist

Ein Index ist für Felder sinnvoll, nach denen häufig gefiltert, verknüpft oder sortiert wird:

Index

Beschleunigt

(shipment)

„Alle Positionen einer Sendung“ – der häufigste Zugriffspfad auf eine untergeordnete Tabelle.

(shipment, positionNumber)

Dieselbe Abfrage, zusätzlich nach Position sortiert.

(articleDescription)

Suche oder Filterung nach dem Artikeltext.

  • Die Reihenfolge der Felder ist entscheidend. Ein Index über (shipment, positionNumber) unterstützt auch Abfragen, die nur nach shipment filtern – nicht jedoch Abfragen, die nur nach positionNumber filtern. Führen Sie das Feld, nach dem Sie immer filtern, zuerst auf.

  • Nicht jedes Feld benötigt einen Index. Jeder Index belegt Speicherplatz und verlangsamt jedes Einfügen und Aktualisieren geringfügig, da die Datenbank ihn pflegen muss. Felder, die Sie nur lesen und nicht durchsuchen (zum Beispiel quantity oder netWeightKg), benötigen keinen Index.

Validierung

Der Editor lehnt einen Index ab, wenn

  • er keine Felder enthält,

  • ein Feld doppelt aufgeführt ist,

  • ein angegebener Feldname nicht existiert oder

  • der Feldtyp nicht indizierbar ist.