Я абсолютно знаю ничего о PostgreSQL, но я довольно приличный разработчик SQL Server, так что я бы хотел все равно попробовать:)
Как вы ожидаете, сколько строк / страниц максимально просмотрит пользователь за сеанс? Например, если вы ожидаете, что пользователь просматривает максимум 10 страниц для каждого сеанса [каждая страница содержит 50 строк], вы можете взять этот максимум и настроить веб-сервис таким образом, чтобы при запросе пользователем первой страницы вы кэшировали 10 * 50 строк (или только Id: s для строк, зависит от того, сколько у вас памяти / одновременных пользователей).
Это, безусловно, поможет ускорить работу вашего веб-сервиса разными способами. И это довольно легко реализовать. Итак:
- Когда пользователь запрашивает данные со страницы № 1. Запустите запрос (в комплекте с order by, проверками соединения и т. Д.), Сохраните все идентификаторы в массиве (но не более 500 идентификаторов). Возвращает datarows, которые соответствуют id: s в массиве в позициях 0-9.
- Когда пользователь запрашивает страницу № 2-10. Возвращает datarows, которые соответствуют id: s в массиве в положениях (страница-1) * 50 - (страница) * 50-1.
Вы также можете увеличивать числа, массив из 500 int: s будет занимать только 2 КБ памяти, но это также зависит от того, насколько быстро вы хотите получить свой первоначальный запрос / ответ.
Я использовал аналогичную технику на живом веб-сайте, и когда пользователь продолжил просматривать страницу 10, я просто переключился на запросы. Я думаю, что другое решение будет продолжать расширять / заполнять массив. (Выполнение запроса снова, но исключая уже включенные идентификаторы: s).
В любом случае, надеюсь, это поможет!