Bazy danych · Middle · Pytanie 36 z 75
Dlaczego paginacja keyset (kursorem) jest szybsza niż OFFSET na dalekich stronach?
SELECT * FROM posts
WHERE (created_at, id) < ($1, $2)
ORDER BY created_at DESC, id DESC
LIMIT 20;- ✓Poprawna odpowiedź: Przechodzi od razu do pozycji przez indeks, zamiast czytać i odrzucać wszystkie wcześniejsze wiersze
- 2Cache'uje wszystkie strony w pamięci
- 3Zwraca mniej kolumn
Wyjaśnienie
Dodaj unikalną kolumnę (np. id) do rozstrzygania remisów. Kompromis: nie da się skoczyć na dowolny numer strony.