Diese Zugriffsmethode kann verwendet werden, wenn eine
WHERE
-Klausel in mehrere
Bereichsbedingungen für verschiedene, mit
AND
kombinierte Schlüssel konvertiert
wurde und jede Bedingung eines der folgenden Elemente ist:
In dieser Form, wo der Index genau
N
Teile hat (d. h. alle
Indexteile sind abgedeckt):
key_part1
=const1
ANDkey_part2
=const2
... ANDkey_partN
=constN
Jede Bereichsbedingung über einen Primärschlüssel einer
InnoDB
- oder
BDB
-Tabelle.
Ein paar Beispiele:
SELECT * FROMinnodb_table
WHEREprimary_key
< 10 ANDkey_col1
=20; SELECT * FROMtbl_name
WHERE (key1_part1
=1 ANDkey1_part2
=2) ANDkey2
=2;
Der Indexverschmelzungs-Schnittmengenalgorithmus führt gleichzeitige Scans aller verwendeten Indizes durch und erzeugt die Schnittmenge der Datensatzsequenzen, die er den verschmolzenen Indexscans entnimmt.
Wenn alle in der Abfrage verwendeten Spalten von den
verwendeten Indizes abgedeckt werden, werden keine
vollständigen Tabellendatensätze abgerufen. (In diesem Fall
enthält die Ausgabe von EXPLAIN
Using index
im Feld
Extra
.) Hier ein Beispiel für eine solche
Abfrage:
SELECT COUNT(*) FROM t1 WHERE key1=1 AND key2=1;
Wenn die verwendeten Indizes nicht alle in der Abfrage verwendeten Spalten abdecken, werden vollständige Datensätze nur dann abgerufen, wenn die Bereichsbedingungen für alle Schlüssel erfüllt sind.
Wenn eine der verschmolzenen Bedingungen eine Bedingung über
einen Primärschlüssel einer InnoDB
- oder
BDB
-Tabelle ist, dann wird sie nicht zum
Abrufen von Datensätzen, sondern zum Ausfiltern von
Datensätzen verwendet, die mit anderen Bedingungen abgerufen
wurden.
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.