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

Как реализовать пагинацию в PostgreSQL без Elasticsearch?

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

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

sobes.tech AI

Пагинацию в PostgreSQL без Elasticsearch можно реализовать несколькими способами:

  1. OFFSET и LIMIT — самый простой способ:
SELECT * FROM table_name ORDER BY id LIMIT 20 OFFSET 40;

Минус — при больших OFFSET запросы становятся медленнее.

  1. Keyset pagination (пагинация по курсору) — более эффективный способ, особенно при больших объемах данных. Вместо OFFSET используем значение последней записи с предыдущей страницы:
SELECT * FROM table_name WHERE id > last_seen_id ORDER BY id LIMIT 20;
  1. Использование курсоров PostgreSQL — позволяет открывать курсор на сервере и получать данные порциями.

Для фронтенда обычно предпочтительна пагинация по курсору, так как она быстрее и стабильнее при динамически меняющихся данных. В UI можно хранить последний полученный ID и передавать его для следующей страницы.