:: DEVELOPER ZONE
MySQL kann Indexe auf mehrfache Spalten erzeugen. Ein Index darf aus bis zu
15 Spalten bestehen. (Auf CHAR- und VARCHAR-Spalten können
Sie auch ein Präfix der Spalte als Teil eines Indexes benutzen).
Ein mehrspaltiger Index kann als sortiertes Array betrachtet werden, das Werte enthält, die durch die Verkettung der Werte der indizierten Spalten erzeugt werden.
MySQL benutzt mehrspaltige Indexe in einer Art, dass Anfragen schnell
werden, wenn Sie eine bekannte Menge für die erste Spalte des Indexes in
einer WHERE-Klausel angeben, selbst wenn Sie keine Werte für die
anderen Spalten angeben.
Angenommen, einen Tabelle wurde wie folgt erzeugt:
mysql> CREATE TABLE test (
id INT NOT NULL,
nachname CHAR(30) NOT NULL,
vorname CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (nachname,vorname));
Dann ist der Index name ein Index über nachname und
vorname. Der Index wird für Anfragen benutzt, die Werte in einem
bekannten Bereich für nachname angeben, oder sowohl für
nachname als auch für und vorname.
Daher wird der name-Index in folgenden Anfragen benutzt:
mysql> SELECT * FROM test WHERE nachname="Widenius";
mysql> SELECT * FROM test WHERE nachname="Widenius"
AND vorname="Michael";
mysql> SELECT * FROM test WHERE nachname="Widenius"
AND (vorname="Michael" OR vorname="Monty");
mysql> SELECT * FROM test WHERE nachname="Widenius"
AND vorname >="M" AND vorname < "N";
In folgenden Anfragen wird der name-Index jedoch NICHT benutzt:
mysql> SELECT * FROM test WHERE vorname="Michael";
mysql> SELECT * FROM test WHERE nachname="Widenius"
OR vorname="Michael";
Weitere Informationen über die Art, wie MySQL Indexe benutzt, um die Anfragen-Performance zu verbessern, finden Sie unter Abschnitt 6.4.3, „Wie MySQL Indexe benutzt“.
© 1995-2005 MySQL AB. All rights reserved.
