Alle MySQL-Datentypen lassen sich indizieren. Die Verwendung von
Indizes der relevanten Spalten ist die beste Möglichkeit, die
Leistung von SELECT
-Operationen zu
optimieren.
Die maximale Anzahl von Indizes pro Tabelle und die maximale Indexlänge werden durch die verwendete Speicher-Engine bestimmt. Siehe auch Kapitel 14, Speicher-Engines und Tabellentypen. Alle Speicher-Engines unterstützen mindestens 16 Indizes pro Tabelle und eine Indexgesamtlänge von mindestens 256 Byte. Bei den meisten Speicher-Engines liegen die Grenzen höher.
Mit der Syntax
in einer Indexdefinition können Sie einen Index erstellen, der
nur die ersten col_name
(N
)N
Zeichen einer
String-Spalte verwendet. Wenn Sie auf diese Weise nur ein
Präfix der Spaltenwerte indizieren, kann dies die Indexdatei
erheblich kleiner machen. Bei der Indizierung einer
BLOB
- oder TEXT
-Spalte
müssen Sie eine Präfixlänge für den
Index angeben. Zum Beispiel:
CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
Präfixe können bis zu 1.000 Byte lang sein (767 Byte bei
InnoDB
-Tabellen). Beachten Sie, dass
Präfixbeschränkungen in Byte angegeben werden, wohingegen die
Präfixlänge in CREATE TABLE
-Anweisungen als
Anzahl der Zeichen interpretiert wird. Dies muss bei
der Angabe einer Präfixlänge für eine Spalte, die einen
Multibytezeichensatz verwendet, in jedem Fall berücksichtigt
werden.
Sie können außerdem FULLTEXT
-Indizes
erstellen. Diese werden für die Volltextsuche verwendet. Nur
die MyISAM
-Speicher-Engine unterstützt
FULLTEXT
-Indizes, und auch nur für
CHAR
-, VARCHAR
- und
TEXT
-Spalten. Die Indizierung erfolgt stets
über die gesamte Spalte – eine Teilindizierung
(Spaltenpräfix) wird nicht unterstützt. Detaillierte
Informationen finden Sie in Abschnitt 12.7, „MySQL-Volltextsuche“.
Sie können auch Indizes für raumbezogene Typen erstellen.
Derzeit unterstützt nur MyISAM
R-Tree-Indizes für raumbezogene Typen. Andere Speicher-Engines
verwenden B-Trees zur Indizierung raumbezogener Typen.
(Ausnahmen sind lediglich ARCHIVE
und
NDBCLUSTER
, die überhaupt keine raumbezogene
Indizierung unterstützen.)
Die MEMORY
-Engine verwendet standardmäßig
HASH
-Indizes, unterstützt aber auch
BTREE
-Indizes.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.