In manchen Fällen verarbeitet MySQL eine Abfrage anders, wenn
Sie LIMIT
verwenden und
row_count
HAVING
nicht einsetzen:
Wenn Sie nur ein paar Datensätze mit
LIMIT
auswählen, benutzt MySQL in
manchen Fällen Indizes, obwohl eigentlich ein
vollständiger Tabellenscan zu bevorzugen wäre.
Wenn Sie LIMIT
mit
row_count
ORDER BY
benutzen, beendet MySQL die
Sortierung, sobald die ersten
row_count
Datensätze des
sortierten Ergebnisses gefunden wurden, statt das gesamte
Ergebnis zu sortieren. Erfolgt die Sortierung mithilfe eines
Indexes, dann ist sie sehr schnell. Ist eine Dateisortierung
erforderlich, dann müssen alle Datensätze ausgewählt
werden, die der Abfrage ohne
LIMIT
-Klausel entsprechen, und die
meisten davon (oder alle) müssen sortiert werden, bevor
sichergestellt ist, dass die ersten
row_count
Datensätze gefunden
wurden. In jedem Fall ist es, wenn die ersten Datensätze
gefunden wurden, nicht mehr notwendig, den Rest der
Ergebnismenge zu sortieren, weswegen MySQL dies auch nicht
tut.
Wenn Sie LIMIT
mit
row_count
DISTINCT
kombinieren, beendet MySQL die
Abfrage, sobald row_count
eindeutige Datensätze gefunden wurden.
In manchen Fällen kann eine GROUP
BY
-Klausel durch Lesen des Schlüssels in der
Reihenfolge (oder Durchführung einer Sortierung für den
Schlüssel) und nachfolgende Berechnung von
Zusammenfassungen aufgelöst werden, bis der Schlüsselwert
sich ändert. In diesem Fall berechnet LIMIT
keine
unnötigen row_count
GROUP BY
-Werte.
Sobald MySQL die erforderliche Anzahl von Datensätzen an
den Client gesendet hat, bricht es die Abfrage ab, sofern
Sie nicht SQL_CALC_FOUND_ROWS
verwenden.
LIMIT 0
gibt schnell eine leere Menge
zurück. Dies kann praktisch sein, um die Gültigkeit einer
Abfrage zu überprüfen. Wenn Sie eines der MySQL-APIs
verwenden, können Sie damit auch die Typen der
Ergebnisspalten ermitteln. (Dieser Trick funktioniert nicht
im MySQL Monitor, der in solchen Fällen lediglich
Empty set
anzeigt. Stattdessen sollten
Sie SHOW COLUMNS
oder
DESCRIBE
für diesen Zweck verwenden.)
Wenn der Server Temporärtabellen zur Auflösung der Abfrage
verwendet, dann berechnet er auf der Basis der
LIMIT
-Klausel, wie
viel Speicher erforderlich ist.
row_count
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.