Die allgemeinste Art und Weise, eine GROUP
BY
-Klausel zu erfüllen, besteht darin, die gesamte
Tabelle zu scannen und eine neue Temporärtabelle zu erstellen,
in der alle Datensätze aus allen Gruppen aufeinander folgend
aufgeführt sind, und dann mithilfe dieser Temporärtabelle
Gruppen zu erkennen und – sofern möglich –
Zusammenfassungsfunktionen anzuwenden. In manchen Fällen kann
MySQL jedoch auf andere Weise wesentlich effizienter vorgehen
und die Erstellung von Temporärtabellen umgehen, indem ein
Indexzugriff verwendet wird.
Die wichtigsten Voraussetzungen zur Verwendung von Indizes für
GROUP BY
bestehen darin, dass alle
GROUP BY
-Spalten Attribute aus demselben
Index referenzieren und dass der Index seine Schlüssel in der
Reihenfolge speichert (beispielsweise ist dies ein
BTREE
- und kein
HASH
-Index). Ob die Verwendung von
Temporärtabellen durch einen Indexzugriff ersetzt werden kann,
hängt auch davon ab, welche Teile eines Indexes in einer
Abfrage verwendet werden, welche Bedingungen für diese Teile
spezifiziert sind und welche Zusammenfassungsfunktionen
ausgewählt wurden.
Es gibt zwei Möglichkeiten, eine GROUP
BY
-Abfrage über den Indexzugriff auszuführen; sie
beide werden in den folgenden Abschnitten beschrieben. Bei der
ersten Methode wird die Gruppierungsoperation ggf. gemeinsam mit
allen Bereichsprädikaten angewandt. Die zweite Methode führt
zunächst einen Bereichsscan durch und gruppiert dann die
Ergebnistupel.
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.