Pagination: Offset und Cursor
Kurz: Pagination teilt lange Ergebnislisten in Seiten auf. Zwei Verfahren sind verbreitet: Offset („überspringe n Einträge”) und Cursor („mache hinter diesem Eintrag weiter”).
Genauer: Mit LIMIT 20 OFFSET 40 holt die Datenbank Seite 3. Bei großen Offsets muss sie die übersprungenen Zeilen trotzdem durchlaufen, das wird langsam. Ändern sich die Daten zwischen zwei Seiten, rutschen Einträge doppelt oder gar nicht durch.
Im Detail
- Cursor-Pagination:
WHERE id > :letzteId ORDER BY id LIMIT 20. Nutzt einen Index, bleibt auch bei Millionen Zeilen schnell. - Stabile Sortierung: Es braucht eine eindeutige Sortierung, zum Beispiel
(created_at, id). - Nachteil Cursor: Man kann nicht direkt zu Seite 57 springen.
- API-Antwort: Enthält oft
nextCursoroder einenLink-Header mit der nächsten Seite. - Unendliches Scrollen: Passt gut zu Cursor, klassische Seitenzahlen zu Offset.
Siehe auch: Connection Pooling