Senior
16
Как реализовать пагинацию в PostgreSQL без Elasticsearch?
Companies where asked
Позитив Технолоджис
Answer from AI
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 и передавать его для следующей страницы.