| PostgreSQL: Das Offizielle Handbuch | ||||
|---|---|---|---|---|
| Zurück | Schnell zurück | Kapitel 7. Anfragen | Schnell nach vorne | Nach vorne |
LIMIT und OFFSET ermöglichen Ihnen, nur einen Teil der Zeilen, die von der übrigen Anfrage erzeugt werden, zurückzugeben:
SELECT select_liste
FROM tabellen_ausdruck
[LIMIT { zahl | ALL }] [OFFSET zahl]
Wenn eine Limit-Zahl angegeben wird, dann werden höchstens so viele Zeilen zurückgegeben (aber möglicherweise weniger, falls die Anfrage selbst weniger Zeilen liefert). LIMIT ALL hat die gleiche Auswirkung, wie wenn man die LIMIT-Klausel auslässt.
OFFSET bedeutet, dass so viele Zeilen ausgelassen werden, bevor Zeilen zurückgegeben werden. OFFSET 0 hat die gleiche Auswirkung, wie wenn man die OFFSET-Klausel auslässt. Wenn sowohl OFFSET als auch LIMIT verwendet werden, dann werden so viele Zeilen ausgelassen, wie in OFFSET angegeben, bevor die Zählung für LIMIT beginnt.
Wenn LIMIT verwendet wird, dann ist es empfehlenswert, eine ORDER BY-Klausel zu verwenden, die die Ergebniszeilen in eine eindeutige Ordnung bringt. Ansonsten erhalten Sie eine nicht vorhersagbare Teilmenge der Ergebniszeilen der Anfrage. Sie könnten zum Beispiel die Zeilen 10 bis 20 anfordern, aber 10 bis 20 nach welcher Reihenfolge? Die Reihenfolge ist unbekannt, wenn ORDER BY nicht verwendet wird.
Der Anfrageoptimierer zieht die LIMIT-Klausel mit in Betracht, wenn er einen Ausführungsplan für eine Anfrage erstellt, was heißt, dass man sehr wahrscheinlich unterschiedliche Pläne (die unterschiedliche Zeilenreihenfolgen ergeben) erhält, wenn man die LIMIT- und OFFSET-Werte verändert. Wenn man folglich die LIMIT- und OFFSET-Werte variiert, um verschiedene Teilmengen eines Anfrageergebnisses auszuwählen, dann wird man widersprüchliche Ergebnisse erhalten, wenn man keine voraussagbare Reihenfolge mit ORDER BY erzwingt. Das ist kein Fehler; das Verhalten folgt aus der Tatsache, dass SQL keine Gewähr dafür gibt, dass das Ergebnis einer Anfrage in einer bestimmten Reihenfolge abgeliefert wird, außer wenn ORDER BY verwendet wird um die Reihenfolge zu beeinflussen.
| Zurück | Zum Anfang | Nach vorne |
| Zeilen sortieren | Nach oben | Datentypen |