Этот вопрос проверяет понимание курсорной пагинации и её преимуществ перед пагинацией через OFFSET.
Курсорная пагинация — это метод пагинации, где вместо смещения (OFFSET) используется условие на основе значения последней строки предыдущей страницы (например, WHERE id > last_id). Она лучше OFFSET, потому что работает быстрее (не требует пропуска строк) и обеспечивает согласованность при изменении данных.
Курсорная пагинация (или keyset pagination) использует фильтрацию по уникальному sequential столбцу (например, id или created_at).
Как работает:
Для первой страницы:
SELECT * FROM items ORDER BY id LIMIT 10;Для следующей страницы: взять id последней строки предыдущей страницы и использовать в условии:
SELECT * FROM items WHERE id > last_id ORDER BY id LIMIT 10;Преимущества перед OFFSET:
Производительность: Запрос использует индекс для быстрого поиска, не пропуская строки.
Согласованность: Даже если данные добавляются/удаляются, страницы remain consistent, так как фильтрация основана на значениях, а не позициях.
Масштабируемость: Подходит для больших datasets.
Ограничения:
Требуется unique sequential column для ordering.
Не поддерживает random access к страницам (только next/previous).