MySQL kann zusammengesetzte Indizes erstellen (d. h. Indizes über mehrere Spalten). Ein Index kann bis zu 15 Spalten umfassen. Bei bestimmten Datentypen können Sie ein Präfix der Spalte indizieren (siehe Abschnitt 7.4.3, „Spaltenindizes“).
Ein mehrspaltiger Index kann als sortiertes Array betrachtet werden, das Werte enthält, die durch Verkettung der Werte der indizierten Spalten entstanden sind.
MySQL verwendet mehrspaltige Indizes derart, dass Abfragen
schnell sind, wenn Sie einen bekannten Teil der ersten Spalte
des Indexes in einer WHERE
-Klausel angeben
– und zwar auch dann, wenn Sie keine Werte für andere Spalten
angeben.
Angenommen, eine Tabelle habe die folgende Spezifikation:
CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first_name) );
Der Index name
ist ein Index über die
Spalten last_name
und
first_name
. Der Index kann für Abfragen, die
Werte in einem bekannten Bereich für
last_name
angeben, oder sowohl für
last_name
als auch für
first_name
verwendet werden. Aus diesem Grund
wird der Index name
in den folgenden Abfragen
benutzt:
SELECT * FROM test WHERE last_name='Widenius'; SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael'; SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty'); SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';
Im Gegensatz dazu wird der Index name
in den
folgenden Abfragen nicht benutzt:
SELECT * FROM test WHERE first_name='Michael'; SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';
Die Art und Weise, wie MySQL Indizes zur Verbesserung der Abfrageleistung verwendet, wird in Abschnitt 7.4.5, „Wie MySQL Indizes benutzt“, näher beschrieben.
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.