Version 6.5 Geändert
SET INDEX (Feld; Index{; Modus{; *}})
Parameter | Typ | Beschreibung | |
Feld | Daten- / Unterdatenfeld | Zu änderndes Datenfeld | |
Index | Boolean | Index anlegen (TRUE) oder | |
Index löschen (FALSE) | |||
Modus | Lange Ganzzahl | Modus der Indizierung (in Prozent) | |
* | Asynchrone Indizierung | ||
wenn * übergeben |
Beschreibung
Der Befehl SET INDEX erstellt oder entfernt den Index für das in Feld übergebene Datenfeld oder Unterdatenfeld.
Wollen Sie das Datenfeld oder Unterdatenfeld indizieren, übergeben Sie in Index TRUE. Ist der Index bereits vorhanden, hat der Aufruf keine Auswirkung. Wollen Sie den Index löschen, übergeben Sie FALSE. Ist der Index nicht vorhanden, hat der Aufruf keine Auswirkung.
SET INDEX indiziert keine gesperrten Datensätze; er wartet ab, bis der Datensatz nicht mehr gesperrt ist.
Mit Version 6.5 können Sie zwischen zwei Indizierungsmodi wählen: Der "klassische" Modus, der in den bisherigen Versionen von 4D eingesetzt wird und der neue "schnelle" Modus, der in den meisten Fällen die Indizierung bedeutend beschleunigt. Weitere Informationen dazu finden Sie im Handbuch 4th Dimension Designmodus.
Sie legen den entsprechenden Index über den Parameter Modus fest. Er wird nur aufgerufen, wenn der Befehl tatsächlich den Index erstellen kann, d.h. der Parameter Index True ist.
Übergeben Sie den Parameter Modus nicht, wird die Indizierung im klassischen Modus ausgeführt. In diesem Fall erfolgt die Indizierung in einem separaten Prozess, die Datenbank bleibt während dieser Zeit verfügbar. Wird eine Operation, die mit dem Index arbeitet, während der Erstellung des Indexes ausgeführt, wird der Index nicht verwendet. Mit dem Befehl GET FIELD PROPERTIES überprüfen Sie, ob ein Feld indiziert ist.
Übergeben Sie den Parameter Modus, wird die Indizierung im schnellen Modus durchgeführt. In diesem Fall können Sie während der Indizierung keine Daten in der Tabelle verändern.
Im Parameter Modus müssen Sie eine Ganzzahl zwischen 0 und 100 übergeben, das ist die Prozentzahl. Mit diesem Wert geben Sie den Verwendungstyp an, für den der Index die größte Effizienz hat:
- Modus = 0: der Index hat die größte Effizienz beim Hinzufügen oder Einfügen von Datensätzen.
- Modus = 100: der Index hat die größte Effizienz beim Durchführen von Suchläufen.
Der optionale Parameter * gestattet 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.
Beispiele
1. Folgendes Beispiel indiziert das Feld [Customers]ID im klassischen Modus:
UNLOAD RECORD([Customers]) SET INDEX ([Customers]ID; True)
2. Sie wollen das Feld [Customers]Name im schnellen Modus indizieren. Dieses Feld wird hauptsächlich für Suchläufe verwendet:
SET INDEX ([Customers]Name; True;100)
2. Sie wollen das Feld [Contacts]Name im schnellen Modus indizieren. Dieses Feld wird hauptsächlich zum Hinzufügen und Einfügen von Namen verwendet, aber auch für Suchläufe:
SET INDEX ([Contacts]Name; True;30)
Referenz
GET FIELD PROPERTIES, ORDER BY, QUERY.