В оптимальном случае разбиение на страницы можно разделить на два этапа.На первом этапе согласно запросу выбора набор строк выбирается из базы данных.Все эти строки могут быть отображены.Вместо извлечения реальных строк просто получите список их идентификаторов.Этот большой список обычно хранится в памяти.Второй шаг - пролистывание списка с запросом n
-ой страницы m
элементов.Тогда только m
строки полностью извлекаются из базы данных с использованием их идентификаторов.
Дополнительный шаг вычисления сводит на нет идею разбиения на страницы, в которой есть список идентификаторов всего набора результатов.
То, о чем я могу думать сейчас, не видя вычислений, это сохранять результаты вычислений в базе данных всякий раз, когда отображаемая строка вставляется / обновляется в БД.Поскольку результаты вычислений зависят от входных параметров, то для каждой строки и для каждого диапазона входных параметров у вас может быть разный результат.
Это сделает возможным пейджинг.Выполнение первого шага подкачки теперь должно включать предварительно вычисленные результаты проверки и обеспечивать намного более быстрый поиск списка идентификаторов строк.