Выбор ответа Middle Проектирование API обновлено

Минус cursor-пагинации

Вопрос

Какой недостаток есть у cursor-пагинации по сравнению с offset?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нельзя сразу перейти на произвольную страницу, например на 37-ю. Курсор указывает на конкретную позицию, поэтому можно идти только вперёд или назад от неё.

Варианты ответа

  1. Медленнее на больших глубинах: базе приходится пропускать все строки до курсора
  2. Не работает с индексами, поэтому каждый запрос превращается в полный перебор таблицы
  3. Дублирует элементы при вставках новых записей между запросами страниц
  4. Нельзя сразу перейти на произвольную страницу, например на 37-юправильный ответ

Разбор

Курсор указывает на конкретную позицию, поэтому можно идти только вперёд или назад от неё. Остальные варианты это как раз недостатки offset: медленный большой OFFSET и дубли при вставках. Cursor-запрос WHERE (created_at, id) < ... наоборот хорошо работает по индексу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.