Sobes.tech
Назад к вопросам
Senior
3

Как работает курсорная пагинация? В чём плюсы и минусы по сравнению с LIMIT/OFFSET?

Компании, где спрашивали
Позитив Технолоджис

Ответ от нейросети

sobes.tech AI

Курсорная пагинация — это способ постраничного вывода данных, при котором для получения следующей страницы используется уникальный идентификатор (курсор) последней записи текущей страницы. Вместо указания номера страницы или смещения, клиент передаёт курсор, и сервер возвращает записи, следующие за этим курсором.

Плюсы курсорной пагинации по сравнению с LIMIT/OFFSET:

  • Более производительна на больших объёмах данных. OFFSET заставляет базу данных пропускать указанное количество строк, что с ростом OFFSET становится дорогим.
  • Избегает проблем с дублированием или пропуском данных при изменении данных между запросами. OFFSET может привести к смещению данных, если в таблице происходят вставки или удаления.
  • Поддерживает стабильный порядок и последовательный просмотр данных.

Минусы:

  • Требует наличия уникального и упорядоченного поля (например, ID или timestamp).
  • Сложнее реализовать и понять, чем простая пагинация с OFFSET.
  • Труднее перейти к произвольной странице (например, сразу на 10-ю), так как нужно знать курсор предыдущей страницы.

Пример курсорной пагинации на SQL:

-- Получить первые 10 записей
SELECT * FROM items ORDER BY id ASC LIMIT 10;

-- Предположим, последний id на первой странице 100
-- Получить следующие 10 записей после id=100
SELECT * FROM items WHERE id > 100 ORDER BY id ASC LIMIT 10;