Розбір рішень · Middle · Запитання 9 з 14
Журнал активності має 50 млн рядків, і OFFSET сповільнюється на глибоких сторінках. В інтерфейсі є лише кнопки «Старіші» й «Новіші». Як пагінувати?
- 1Лишити
OFFSET, але кешувати кожну сторінку - 2Обмежити глибину першою 1000 сторінок
- 3Keyset-пагінація за
(created_at, id)
Показати відповідь
Правильна відповідь: Keyset-пагінація за (created_at, id)
Пояснення
Keyset-пагінація переходить за індексом, тож глибина не впливає на швидкість, а більше, ніж кнопки вперед і назад, їй не потрібно. Кешування підходить для списку, що рідко змінюється, а журнал постійно росте, тож кешовані сторінки зсуваються. Обмеження глибини підходить для результатів пошуку, куди глибоко не заходять, а тут сховало б старі записи, які можуть знадобитися.