Очевидно, тут есть логическая ошибка. Если вы выводите что-то пользователю, то предполагается, что он с этим реально будет взаимодействовать. Ваш пользователь действительно может просмотреть хотя бы 1млн из 20млн ваших записей?
Пересмотрите логику работы вашего приложения, выводить даже "20-30 тыс. строк" - это уже очень странный юзкейс, не то что ваш пример.