Share via


JET_INDEXCREATE-Struktur

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

Die JET_INDEXCREATE -Struktur enthält die Informationen für einen Index über Daten in einer Datenbank (ESE = Extensible Storage Engine) erstellen. Die Struktur wird durch Funktionen wie JetCreateIndex2und Datenstrukturen, z. B. JET_TABLECREATE und JET_TABLECREATE2verwendet.

typedef struct tagJET_INDEXCREATE {
  unsigned long cbStruct;
  tchar* szIndexName;
  tchar* szKey;
  unsigned long cbKey;
  JET_GRBIT grbit;
  unsigned long ulDensity;
  union {
    unsigned long lcid;
    JET_UNICODEINDEX* pidxunicode;
  };
  union {
    unsigned long cbVarSegMac;
    JET_TUPLELIMITS* ptuplelimits;
  };
  JET_CONDITIONALCOLUMN* rgconditionalcolumn;
  unsigned long cConditionalColumn;
  JET_ERR err;
  unsigned long cbKeyMost;
} JET_INDEXCREATE;

Mitglieder

cbStruct

Die Größe in Bytes, der Struktur. Stellen Sie dieses Element auf Sizeof (JET_INDEXCREATE).

szIndexName

Der Name des Indexes zu erstellen.

Der Name des Indexes muss die folgenden Bedingungen erfüllen:

  • Er muss kleiner als JET_cbNameMost, nicht einschließlich den abschließenden Null sein.

  • Es muss eines der folgenden Zeichen bestehen: 0 (null) bis 9, A bis Z, a bis z und alle anderen Interpunktionszeichen mit Ausnahme von "!" (Ausrufezeichen) "," (Komma), "[" (eckige Klammer links) und "]" (eckige Klammer rechts) – d. h. ASCII-Zeichen 0 x 20, 0 x 22 bis 0x2d, 0x2f durch 0x5a, 0x5c, 0x5d bis 0x7f.

  • Er darf nicht mit einem Leerzeichen beginnen.

  • Sie müssen mindestens einen ersten Zeichen bestehen.

szKey

Ein Zeiger auf eine Doppel-Null-terminierte Zeichenfolge mit Null getrennte Token.

Jedes Token hat das Format "< Richtung-Bezeichner >< Spaltenname >", wobei Richtung-Spezifikation entweder ist "+" oder "-". Angenommen, eine SzKey von "+ abc\0 def\0 + ghi\0" wird über die drei Spalten "Abc" (in aufsteigender Reihenfolge), index (in absteigender Reihenfolge) "Def" und "Ghi" (in aufsteigender Reihenfolge). In der Programmiersprache C Zeichenfolgenliterale haben eine implizite NULL -Terminator; Daher wird die oben gezeigte Zeichenfolge von Doppel-NULL eingestellt werden.

Die Anzahl der Spalten in der SzKey darf den Wert der JET_ccolKeyMost (eine Konstante versionsabhängig) nicht überschreiten.

Mindestens eine Spalte muss in SzKeybenannt werden.

Veraltete Verhalten: nach der Doppel-NULL-Terminator eine Sprach-ID (ein Wort, das in MAKELCID (Langid SORT_DEFAULT) übergeben wird) als eine Möglichkeit zum Angeben der LCID für den Index angegeben wird. Es ist unzulässig, eine Sprach-ID im SzKey und einer LCID in JET_UNICODEINDEX angeben (durch Festlegen von JET_bitIndexUnicode in JET_errInvalidGrbit).

Veraltete: Nachdem die Sprach-ID ist es möglich, CbVarSegMac als USHORT übergeben. Das Verhalten ist nicht definiert, wenn die USHORT in SzKey festgelegt ist und in der Struktur CbVarSegMac festgelegt ist.

cbKey

Die Länge des SzKey einschließlich der abschließenden zwei NULL-Werte in Byte.

JET_errInvalidGrbit

Eine Gruppe von Bits, die in der folgenden Tabelle keine oder mehrere der aufgeführten Werte enthält.

Wert

Bedeutung

JET_bitIndexUnique

Doppelte Einträge (Schlüssel) sind nicht zulässig. Dadurch wird erzwungen, wenn JetUpdate aufgerufen wird, nicht, wenn JetSetColumn aufgerufen wird.

JET_bitIndexPrimary

Der Index ist ein Primärindex (Cluster). Jede Tabelle muss genau einen Primärindex haben. Wenn kein primärer Index explizit über eine Tabelle definiert ist, wird das Datenbankmodul einen eigenen primären Index erstellen.

JET_bitIndexDisallowNull

Keine der Spalten, über die der Index erstellt ist, kann einen NULL -Wert enthalten.

JET_bitIndexIgnoreNull

Einen Indexeintrag für eine Zeile kann nicht hinzugefügt werden, wenn alle indizierten Spalten NULLsind.

JET_bitIndexIgnoreAnyNull

Einen Indexeintrag für eine Zeile kann nicht hinzugefügt werden, wenn die indizierten Spalten NULLsind.

JET_bitIndexIgnoreFirstNull

Einen Indexeintrag für eine Zeile kann nicht hinzugefügt werden, wenn die erste indizierte Spalte NULList.

JET_bitIndexLazyFlush

Index-Vorgänge werden verzögert protokolliert.

JET_bitIndexLazyFlush hat keine Auswirkungen auf die Faulheit der Datenaktualisierung. Wenn der Indizierungsvorgang durch Beendigung unterbrochen wird, Soft Recovery-Vorgang werden in der Lage, um die Datenbank in einen konsistenten Zustand zu erhalten, aber der Index ist möglicherweise nicht vorhanden.

JET_bitIndexEmpty

Führen Sie das Erstellen des Index, da alle Einträge zu NULLausgewertet werden. JET_errInvalidGrbit müssen auch JET_bitIgnoreAnyNull angeben, wenn JET_bitIndexEmpty übergeben wird. Dies ist eine Leistungsverbesserung. Wenn eine neue Spalte zu einer Tabelle hinzugefügt wird, wird über diese neu hinzugefügte Spalte ein Index erstellt und alle Datensätze in der Tabelle werden gescannt, auch wenn sie nicht in den Index aufgenommen werden. Angeben von JET_bitIndexEmpty überspringt das Scannen der Tabelle, die potenziell sehr lange dauern kann.

JET_bitIndexUnversioned

Indexerstellung für andere Transaktionen sichtbar wird. In der Regel wird eine Sitzung in einer Transaktion keinem Indexerstellungsvorgang in einer anderen Sitzung sehen können. Dieses Flag ist nützlich, wenn eine andere Transaktion dürfte den gleichen Index zu erstellen. Die zweite Index-create schlägt fehl, anstelle von potenziell zu viele unnötige Datenbankoperationen. Die zweite Transaktion möglicherweise nicht in der Lage, den Index sofort zu verwenden. Der Indexerstellungsvorgang muss abgeschlossen werden, bevor er verwendet werden kann. Die Sitzung muss aktuell in einer Transaktion zum Erstellen eines Indexes ohne Versionsinformationen nicht.

JET_bitIndexSortNullsHigh

Dieses Flag angegeben wird, NULL -Werte nach Daten für alle Spalten im Index sortiert werden.

JET_bitIndexUnicode

Angabe dieses Flags wirkt sich auf die Interpretation der union Lcid/Pidxunicde-Feld in der Struktur. Die Bit-Mittel festlegen, die das Pidxunicode -Feld tatsächlich auf eine JET_UNICODEINDEX -Struktur zeigt. JET_bitIndexUnicode ist nicht erforderlich, um Unicode-Daten zu indizieren. Es dient nur die Normalisierung von Unicode-Daten anpassen.

JET_bitIndexTuples

Gibt an, dass der Index einen Tupelindex ist. Eine Beschreibung der einen Tupelindex finden Sie unter JET_TUPLELIMITS .

JET_bitIndexTuples wurde in das Betriebssystem Windows XP eingeführt.

JET_bitIndexTupleLimits

Angabe dieses Flags wirkt sich auf die Interpretation der union CbVarSegMac/Ptuplelimits -Feld in der Struktur. Diese Einstellung bedeutet, dass das Feld Ptuplelimits eine JET_TUPLELIMITS -Struktur zeigt bit, benutzerdefinierte Tupel Index beschränkt (impliziert JET_bitIndexTuples).

JET_bitIndexTupleLimits wurde in das Betriebssystem Windows Server 2003 eingeführt.

JET_bitIndexCrossProduct 0x00004000

Angabe dieses Flags für einen Index, der mehr als eine Schlüsselspalte enthält, die eine Spalte mit mehreren Werten führt einen Indexeintrag für jedes einzelne Ergebnis ein Kreuzprodukt aller Werte in diesen Spalten erstellt werden. Anderenfalls der Index hätte nur einen Eintrag für jede mehrere Werte in der wichtigsten Schlüsselspalte, die eine Spalte mit mehreren Werten und jeweils die Indexeinträge würden die ersten mehrere Werte aus anderen wichtigen Spalten, die Spalten mit mehreren Werten verwenden.

Z. B. Wenn Sie dieses Kennzeichen für einen Index auf der Spalte angegeben, die die Werte "Red" und "blue" hat und in Spalte B mit den Werten "1" und "2" dann dem Index Einträge erstellt werden würde: "Rot", "1"; "Rot", "2"; "Blau", "1"; "Blau", "2". Andernfalls würde die folgenden Einträge erstellt werden: "Rot", "1"; "Blau", "1".

JET_bitIndexCrossProduct wurde in der Windows Vista-Betriebssystem eingeführt.

JET_bitIndexKeyMost 0x00008000

Angabe dieses Flags bewirkt, dass den Index verwendet die größte gültige Schlüsselgröße in das CbKeyMost -Feld in der Struktur angegeben. Andernfalls wird der Index JET_cbKeyMost (255) als die größte gültige Schlüsselgröße verwenden.

JET_bitIndexKeyMost wurde in Windows Vista eingeführt.

JET_bitIndexDisallowTruncation 0x00010000

Angabe dieses Flags wird alle Aktualisierungen für den Index verursachen, die eine abgeschnittene Schlüssel mit JET_errKeyTruncated fehlschlagen würde. Andernfalls werden Schlüssel automatisch abgeschnitten. Weitere Informationen zu wichtigen Abschneiden finden Sie unter der JetMakeKey -Funktion.

Windows Vista: JET_bitIndexDisallowTruncation in Windows Vista eingeführt wird.

JET_bitIndexNestedTable 0x00020000

Angabe dieses Flags aktualisiert Ursache den Index über mehrere Spalten mit mehreren Werten jedoch nur mit den Werten des gleichen ItagSequence.

JET_bitIndexNestedTable wurde in Windows Vista eingeführt.

ulDensity

Die Dichte der Prozentsatz der Erstindex B +-Struktur. Der eine Zahl kleiner als 100 verbraucht mehr Speicherplatz zum Erstellen des Indexes zu Beginn zukünftiges Wachstum des Indexes an, so dass interne Fragmentierung vorhanden sein können.

lcid

Der Gebietsschemabezeichner (LCID) verwenden, wenn die Daten normalisieren, wenn der JET_bitIndexUnicode-Wert im JET_errInvalidGrbit -Parameter nicht angegeben wird. Die LCID der Normalisierung wirkt sich auf, wenn der Index über Unicode-Spalten ist.

pidxunicode

Ein Zeiger auf eine JET_UNICODEINDEX -Struktur, wenn der JET_bitIndexUnicode-Wert im JET_errInvalidGrbit -Parameter angegeben ist. Dies ermöglicht es dem Benutzer, benutzerdefinierte Kennzeichen anzugeben, die während der Unicode-Normalisierung der LCMapString -Funktion übergeben werden.

cbVarSegMac

Die maximale Länge in Bytes der einzelnen Spalten im Index zu speichern, wenn der JET_bitIndexTupleLimits-Wert im JET_errInvalidGrbit -Parameter nicht angegeben wird.

Einen Wert von 0 (null) für dieses Feld ist äquivalent zu:

  • JET_cbPrimaryKeyMost für einen primären Index angeben.

  • JET_cbSecondaryKeyMost für einen sekundären Index angeben.

ptuplelimits

Ein Zeiger auf eine JET_TUPLELIMITS -Struktur, wenn der JET_bitIndexTupleLimits-Wert im JET_errInvalidGrbit -Parameter angegeben ist.

Ptuplelimits wurde in Windows Server 2003 eingeführt.

rgconditionalcolumn

Ein optionaler Parameter, ein Array von JET_CONDITIONALCOLUMN -Strukturen, die verwendet werden, um die bedingten Spalten im Index angeben.

cConditionalColumn

Die Anzahl der Strukturen im Rgconditionalcolumn -Array.

err

Enthält den Rückgabecode für diesen Index zu erstellen.

cbKeyMost

Gibt die maximal zulässige Größe in Bytes für den Schlüssel im Index an. Dieser Parameter wird ignoriert, wenn der JET_bitIndexKeyMost-Wert im JET_errInvalidGrbit -Parameter nicht angegeben wird. Wenn dieser Parameter auf 0 (null) festgelegt ist und JET_bitIndexKeyMost in der JET_errInvalidGrbit -Parameter angegeben ist, wird die aufrufende Funktion mit JET_err_InvalidDef fehl.

Die minimale unterstützte maximale Schlüsselgröße ist JET_cbKeyMostMin (255), die legacy größte gültige Schlüsselgröße.

Die größte gültige Schlüsselgröße ist abhängig von der Seitengröße der Datenbank (JET_paramDatabasePageSize), wie folgt:

  • Wenn JET_paramDatabasePageSize = 2048 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost2KBytePage (500)

  • Wenn JET_paramDatabasePageSize = 4096 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost4KBytePage (1000)

  • Wenn JET_paramDatabasePageSize = 8192 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost8KBytePage (2000)

Die maximale unterstützte Schlüsselgröße für die Instanz kann auch aus der Systemparameter JET_paramKeyMost gelesen werden.

CbKeyMost wurde in Windows Vista eingeführt.

Anmerkungen

ESE unterstützt Indizierung über Schlüsselspalten, die mehrere Werte enthalten. Um dieses Feature zu verwenden, muss die Spalte eine markierte Spaltentyp (JET_bitColumnTagged) sein und muss damit seine mehrere Werte mit JET_bitColumnMultiValued indiziert gekennzeichnet werden. In Windows-Versionen vor Windows Vista wird nur die erste mehrwertige Schlüsselspalte im Index die Werte im Index erweitert haben. Alle anderen mehrwertigen und markierten Spalten haben nur ihre erste Werte im Index erweitert.

Vorausgesetzt, die folgenden Zeilen in einer Tabelle vorhanden (Spalte Alpha ist nicht mehrwertig, während Spalten Beta, Gamma und Delta sind mehrwertig) und erstellt ein Index als "+ Alpha\0 + Beta\0 + Gamma\0 + Delta\0\0":

Alpha

Beta

Gamma

Delta

1

ABC
GHI
JKL

MNO
AZ
STU

VWX
YZ

2

DIE

Regen
Spanien

IN
liegt

Die fallenden Index-Tupel werden gespeichert:

{1, ABC, MNO, VWX}
{1, GHI, MNO, VWX}
{1, JKL, MNO, VWX}
{2, der, Regen, IN}

Beachten Sie, dass {2, der, Spanien, IN} nicht gespeichert, obwohl die Alpha-Spalte in der zweiten Zeile geschieht mit einer einzigen mehrere Werte haben.

In Versionen von Windows ab Windows Vista können alle Spalten mit mehreren Werten im Index durch die Angabe von JET_bitIndexCrossProduct erweitert werden.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server.

Kopfzeile

In Esent.h deklariert.

Unicode

Implementiert als JET_ INDEXCREATE_W (Unicode) und JET_ INDEXCREATE_A (ANSI).

Siehe auch

JET_COLTYP
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_TABLECREATE
JET_TABLECREATE2
JET_TUPLELIMITS
JET_UNICODEINDEX
JetCreateIndex2
JetSetColumn
JetUpdate