Назад к вопросам
Senior
4
Как реализовать пагинацию в PostgreSQL без Elasticsearch?
Компании, где спрашивали
Позитив Технолоджис
Ответ от нейросети
sobes.tech AI
Пагинацию в PostgreSQL без Elasticsearch можно реализовать несколькими способами:
- OFFSET и LIMIT — самый простой способ:
SELECT * FROM table_name ORDER BY id LIMIT 20 OFFSET 40;
Минус — при больших OFFSET запросы становятся медленнее.
- Keyset pagination (пагинация по курсору) — более эффективный способ, особенно при больших объемах данных. Вместо OFFSET используем значение последней записи с предыдущей страницы:
SELECT * FROM table_name WHERE id > last_seen_id ORDER BY id LIMIT 20;
- Использование курсоров PostgreSQL — позволяет открывать курсор на сервере и получать данные порциями.
Для фронтенда обычно предпочтительна пагинация по курсору, так как она быстрее и стабильнее при динамически меняющихся данных. В UI можно хранить последний полученный ID и передавать его для следующей страницы.