Version 11 (Geändert)
SET INDEX (Feld; Index{; Modus{; *}})
Parameter Typ Beschreibung
Feld | Datenfeld | Datenfeld für Erstellen oder Löschen des Index | |
Index | Boolean / Ganzzahl | Wahr=Index anlegen, Falsch =Index löschen | |
oder Indextyp erstellen: -1=Schlüsselwort, | |||
0=Standard, 1=B-Tree standard, 3=B-Tree cluster | |||
Modus | Lange Ganzzahl | Obsolet (Parameter wird ignoriert) | |
* | Mit *: Asynchrone Indizierung |
Beschreibung
Der Befehl SET INDEX erlaubt zwei Syntaxarten:
- Übergeben Sie in Index einen Boolean Wert, erstellt oder entfernt der Befehl den Index für das in Feld angegebene Datenfeld.
- Übergeben Sie in Index eine Ganzzahl, erstellt der Befehl den angegebenen Indextyp.
Index = Boolean
Wollen Sie das Datenfeld indizieren, übergeben Sie in Index WAHR. Der Befehl legt einen Index vom Typ Standard an. Ist der Index bereits vorhanden, hat der Aufruf keine Auswirkung.
Übergeben Sie in Index FALSCH, löscht der Befehl alle nicht-zusammengesetzten Indizes, die dem Feld zugewiesen sind. Ist kein Index vorhanden, hat der Aufruf keine Auswirkung.
Index = Ganzzahl
In die-sem Fall erstellt der Befehl einen bestimmten Indextyp. Sie können eine der nachfolgenden Konstanten unter dem Thema "Indextyp" übergeben:
- Keywords Index (-1): Index nach Schlüsselwörtern, der die Indizie-rung des Feldinhalts Wort für Wort ermöglicht. Diese Art lässt sich nur auf Felder vom Typ Text oder Alphanumerisch anwenden.
- Default Index Type (0): In diesem Fall definiert 4D den Indextyp (ausgenommen Index nach Schlüsselwörtern), der je nach dem Feldinhalt am optimalsten ist.
- Standard BTree Index (1): Index vom Typ Standard B-Baum. Dieser vielfältige Indextyp wird in den bisherigen Versionen von 4D ver-wendet.
- Cluster BTree Index (3): Index vom Typ B-Baum mit Clustern. Die-ser Typ ist optimal für Indizes mit wenigen Schlagwörtern, z.B. wenn dieselben Werte in den Daten sich häufig wiederholen.
SET INDEX indiziert keine gesperrten Datensätze; er wartet ab, bis der Datensatz nicht mehr gesperrt ist.
Der Parameter Modus hat ab Version 11 keine Bedeutung mehr und wird ignoriert, wenn er übergeben wurde.
Der optionale Parameter * erlaubt eine asynchrone (simultane) Indizierung. Mit asynchroner Indizierung kann eine aufgerufene Methode weiter ausgeführt werden, auch wenn die Indizierung noch nicht abgeschlossen ist. Die Ausführung wird jedoch bei einem Befehl gestoppt, der auf den Index zugreift.
Hinweise:
Mit diesem Befehl erstellte Indizes haben keinen Namen. Folglich lassen sie sich nicht über den Befehl DELETE INDEX löschen, da er eine auf Namen basierende Syntax verwendet.
Dieser Befehl kann keine zusammengesetzten Indizes erstellen oder löschen.
Dieser Befehl erlaubt nicht das Löschen von Indizes nach Schlüsselwörtern, die mit dem Befehl CREATE INDEX angelegt wurden.
Beispiele
1. Folgendes Beispiel indiziert das Feld [Customers]ID:
UNLOAD RECORD([Customers]) SET INDEX ([Customers]ID; True)
2. Sie wollen das Feld [Customers]Name im schnellen Modus indizieren:
SET INDEX ([Customers]Name; True;100)
3. Dieses Beispiel erstellt einen Index nach Schlüsselwörtern:
SET INDEX([Books]Summary; Keywords Index)
Referenz
CREATE INDEX, DELETE INDEX, GET FIELD PROPERTIES, ORDER BY, QUERY.