Бази даних · Middle · Запитання 36 з 75
Чому keyset-пагінація (курсором) швидша за OFFSET на далеких сторінках?
SELECT * FROM posts
WHERE (created_at, id) < ($1, $2)
ORDER BY created_at DESC, id DESC
LIMIT 20;- ✓Правильна відповідь: Вона одразу переходить до потрібної позиції через індекс, а не читає й відкидає всі попередні рядки
- 2Вона кешує всі сторінки в пам'яті
- 3Вона повертає менше стовпців
Пояснення
Додайте унікальний стовпець (як-от id) для однозначності порядку. Компроміс: не можна перейти на довільний номер сторінки.