Кассовая отчётность выгружалась синхронно: сорок с лишним секунд ожидания и обрыв по таймауту на больших периодах. Мы перевели выгрузку в фоновую задачу с индикатором готовности, а чтение — на курсор с постоянным расходом памяти. Заодно научились показывать количество страниц без пересчёта всей таблицы и прыгать на последнюю страницу за секунды.
Выгрузка стала фоновой задачей с индикатором готовности: пользователь не держит вкладку открытой и не ловит таймаут на длинном периоде.
Чтение идёт keyset-курсором с постоянным расходом памяти — размер выборки больше не влияет на потребление. Количество страниц оценивается без полного пересчёта таблицы, с точностью около 0.1%, а переход в конец списка занимает секунды вместо десятков минут.
Совпадение того, что видно на экране, и того, что попало в файл, закреплено автотестом: разойтись незаметно они больше не могут.