Freigeben über


INDEX-Befehl

Erstellt eine Indexdatei zum Anzeigen und Zugreifen auf Tabellendatensätze in einer logischen Reihenfolge.

Syntax

  
INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]  
   [FOR lExpression]  
   [COMPACT]  
   [ASCENDING | DESCENDING]  
   [UNIQUE | CANDIDATE]  
   [ADDITIVE]  

Argumente

eExpression
Gibt einen Indexausdruck an, der den Namen eines Felds oder felds aus der aktuellen Tabelle enthalten kann. Ein Indexschlüssel basierend auf dem Indexausdruck wird in der Indexdatei für jeden Datensatz in der Tabelle erstellt. Visual FoxPro verwendet diese Tasten zum Anzeigen und Zugreifen auf Datensätze in der Tabelle.

Hinweis

Obwohl nicht empfohlen, kann eExpression auch eine Speichervariable, ein Arrayelement oder ein Feld- oder Feldausdruck aus einer Tabelle in einem anderen Arbeitsbereich sein. Memofelder können nicht allein in Indexdateiausdrücken verwendet werden; sie müssen mit anderen Zeichenausdrücken kombiniert werden. Wenn Sie auf einen Index zugreifen, der eine Variable oder ein Feld enthält, das nicht mehr vorhanden ist oder nicht gefunden werden kann, generiert Visual FoxPro eine Fehlermeldung.

Wenn Sie versuchen, einen Index mit einem Schlüssel zu erstellen, der in der Länge variiert, wird der Schlüssel mit Leerzeichen aufgefüllt. Indexschlüssel mit variabler Länge werden in Visual FoxPro nicht unterstützt.

Es ist möglich, einen Indexschlüssel mit null Länge zu erstellen. Beispielsweise wird ein Indexschlüssel der Länge Null erstellt, wenn der Indexausdruck eine Teilzeichenfolge eines leeren Memofelds ist. Ein Indexschlüssel der Länge Null generiert eine Fehlermeldung. Wenn Visual FoxPro einen Index erstellt, werden Felder im ersten Datensatz in der Tabelle ausgewertet. Wenn ein Feld leer ist, kann es erforderlich sein, einige temporäre Daten in das Feld im ersten Datensatz einzugeben, um einen 0-längen Indexschlüssel zu verhindern.

TO IDXFileName
Erstellt eine IDX-Indexdatei. Die Indexdatei erhält die Standarderweiterung .idx.

TAG TagName[OF CDXFileName]
Erstellt eine zusammengesetzte Indexdatei. Eine zusammengesetzte Indexdatei ist eine einzelne Indexdatei, die aus einer beliebigen Anzahl separater Tags (Indexeinträge) besteht. Jedes Tag wird durch seinen eindeutigen Tagnamen identifiziert. Tagnamen müssen mit einem Buchstaben oder einem Unterstrich beginnen und können aus einer beliebigen Kombination aus bis zu 10 Buchstaben, Ziffern oder Unterstrichen bestehen. Die Anzahl der Tags in einer Zusammengesetzten Indexdatei ist nur durch verfügbaren Arbeitsspeicher und Speicherplatz begrenzt.

Zusammengesetzte Indexdateien mit mehreren Einträgen sind immer kompakt. Es ist nicht erforderlich, COMPACT beim Erstellen einer Zusammengesetzten Indexdatei einzuschließen. Namen von Zusammengesetzten Indexdateien erhalten eine CDX-Erweiterung.

Es können zwei Typen zusammengesetzter Indexdateien erstellt werden: strukturell und nicht strukturell.

Strukturelle Zusammengesetzte Indexdateien Sie können eine strukturelle Verbundindexdatei mit TAG TagName erstellen, indem Sie die optionale OF CDXFileName-Klausel ausschließen. Eine Strukturelle Verbundindexdatei hat immer denselben Basisnamen wie die Tabelle und wird automatisch geöffnet, wenn die Tabelle geöffnet wird.

Nicht strukturelle Verbundindexdateien Sie können eine nicht strukturfreie Verbundindexdatei erstellen, indem Sie OF CDXFileName nach TAG TagName einschließen. Im Gegensatz zu einer Strukturellen Verbundindexdatei muss eine nicht strukturfreie Zusammengesetzte Indexdatei explizit mit der INDEX-Klausel in USE geöffnet werden.

Wenn bereits eine zusammengesetzte Indexdatei erstellt und geöffnet wurde, fügt das Ausstellen von INDEX mit TAG TagName der Zusammengesetzten Indexdatei ein Tag hinzu.

FOR lExpression
Gibt eine Bedingung an, bei der nur Datensätze, die den Filterausdruck lExpression erfüllen, zum Anzeigen und Zugriff verfügbar sind; Indexschlüssel werden in der Indexdatei nur für diese Datensätze erstellt, die dem Filterausdruck entsprechen.

Visual FoxPro Rushmore Technologie optimiert einen INDEX ... FOR lExpression-Befehl , wenn lExpression ein optimierter Ausdruck ist. Um eine optimale Leistung zu erzielen, verwenden Sie einen optimierten Ausdruck in der FOR-Klausel.

KOMPAKT
Erstellt eine kompakte IDX-Datei.

AUFSTEIGEND
Gibt eine aufsteigende Reihenfolge für die CDX-Datei an. CDX-Tags werden standardmäßig in aufsteigender Reihenfolge erstellt. (Sie können AUFSTEIGEND als Erinnerung an die Reihenfolge der Indexdatei einschließen.) Eine Tabelle kann in umgekehrter Reihenfolge mit ABSTEIGEND indiziert werden.

ABSTEIGEND
Gibt eine absteigende Reihenfolge für die CDX-Datei an. Beim Erstellen von IDX-Indexdateien können Sie ABSTEIGEND nicht einschließen.

EINZIGARTIG
Gibt an, dass nur der erste Datensatz, der mit einem bestimmten Indexschlüsselwert aufgetreten ist, in einer IDX-Datei oder einem CDX-Tag enthalten ist. UNIQUE kann verwendet werden, um die Anzeige oder den Zugriff auf doppelte Datensätze zu verhindern. Alle Datensätze, die mit doppelten Indexschlüsseln hinzugefügt wurden, werden von der Indexdatei ausgeschlossen. Die Verwendung der UNIQUE-Option von INDEX ist identisch mit der Ausführung von SET UNIQUE ON vor dem Ausstellen von INDEX oder REINDEX.

Wenn ein UNIQUE-Index- oder Indextag aktiv ist und ein doppelter Datensatz so geändert wird, dass der Indexschlüssel geändert wird, wird der Index oder das Indextag aktualisiert. Auf den nächsten doppelten Datensatz mit dem ursprünglichen Indexschlüssel kann jedoch erst zugegriffen oder angezeigt werden, wenn Sie die Datei mit REINDEX neu indizieren.

KANDIDAT
Erstellt ein Kandidatenstrukturindextag. Das SCHLÜSSELwort CANDIDATE kann nur beim Erstellen eines Strukturellen Indextags einbezogen werden. andernfalls generiert Visual FoxPro eine Fehlermeldung.

Ein Kandidatenindextag verhindert doppelte Werte im Feld oder in der Kombination von Feldern, die im Indexausdruck eExpression angegeben sind. Der Begriffskandidat bezieht sich auf die Art des Indexes; da Kandidatenindizes doppelte Werte verhindern, gelten sie als "Kandidat" als Primärindex.

Visual FoxPro generiert einen Fehler, wenn Sie ein Kandidatenindextag für ein Feld oder eine Kombination von Feldern erstellen, die bereits doppelte Werte enthalten.

ADDITIV
Öffnet alle zuvor geöffneten Indexdateien. Wenn Sie die ADDITIVE-Klausel weglassen, wenn Sie eine Indexdatei oder Dateien für eine Tabelle mit INDEX erstellen, werden alle zuvor geöffneten Indexdateien (mit Ausnahme des strukturellen Verbundindexes) geschlossen.

Bemerkungen

Datensätze in einer Tabelle mit einer Indexdatei werden in der durch den Indexausdruck angegebenen Reihenfolge angezeigt und darauf zugegriffen. Die physische Reihenfolge der Datensätze in der Tabelle wird nicht durch eine Indexdatei geändert.

Indextypen

Mit Visual FoxPro können Sie zwei Arten von Indexdateien erstellen:

  • Zusammengesetzte CDX-Indexdateien mit mehreren Indexeinträgen, die als Tags bezeichnet werden

  • IDX-Indexdateien mit einem Indexeintrag

Sie können auch eine strukturelle Verbundindexdatei erstellen, die automatisch mit der Tabelle geöffnet wird.

Hinweis

Da strukturelle Verbundindexdateien beim Öffnen der Tabelle automatisch geöffnet werden, sind sie der bevorzugte Indextyp.

Schließen Sie COMPACT ein, um kompakte IDX-Indexdateien zu erstellen. Zusammengesetzte Indexdateien sind immer kompakt.

Indexreihenfolge und Aktualisierung

Nur eine Indexdatei (die Masterindexdatei) oder tag (das Mastertag) steuert die Reihenfolge, in der die Tabelle angezeigt oder zugegriffen wird. Bestimmte Befehle (seek, z. B. SEEK) verwenden die Masterindexdatei oder das Tag, um nach Datensätzen zu suchen. Alle geöffneten IDX- und CDX-Indexdateien werden jedoch aktualisiert, wenn Änderungen an der Tabelle vorgenommen werden.

Benutzerdefinierte Funktionen

Obwohl ein Indexausdruck eine benutzerdefinierte Funktion enthalten kann, sollten Sie keine benutzerdefinierten Funktionen in einem Indexausdruck verwenden. Benutzerdefinierte Funktionen in einem Indexausdruck erhöhen die Zeit, die zum Erstellen oder Aktualisieren des Indexes benötigt wird. Außerdem treten Indexaktualisierungen möglicherweise nicht auf, wenn eine benutzerdefinierte Funktion für einen Indexausdruck verwendet wird.

Wenn Sie eine benutzerdefinierte Funktion in einem Indexausdruck verwenden, muss Visual FoxPro in der Lage sein, die benutzerdefinierte Funktion zu finden. Wenn Visual FoxPro einen Index erstellt, wird der Indexausdruck in der Indexdatei gespeichert, aber nur ein Verweis auf die benutzerdefinierte Funktion ist im Indexausdruck enthalten.

Siehe auch

ALTER TABLE (SQL-Befehl)
BEFEHL 'TAG LÖSCHEN'
BEFEHL 'SORTIEREN FESTLEGEN'
EINDEUTIGEN BEFEHL FESTLEGEN