Итак, я делаю SQL запрос, который занимает до 10 минут, чтобы получить около 20К элементов данных. Само по себе это не проблема
Это проблема сама по себе. Вероятно, Сервер разорвет соединение через 0,5-5 минут. И по опыту, это также бесполезный объем данных для извлечения.
Ни один человек не сможет обработать 20000 записей каким-либо значимым образом. Вы должны применить дополнительную фильтрацию, прежде чем у вас появится возможность показать это пользователю. Если пользователь может обработать 200 записей, это будет 1% от того, что вы получили. И это, вероятно, будет меньше - я предполагаю, может быть, 20.
Очень распространенная ошибка новичков - получить тонну из БД, а затем выполнить фильтрацию в коде. Thgat действительно просто тратит ОЗУ, циклы ЦП и пропускную способность сети на то, с чем сервер БД был лучше с самого начала. Это еще хуже для веб-серверов, которым действительно не хватает памяти или циклов ЦП.
Делайте столько же фильтрации, упорядочивания, разбивки на страницы и даже обработки в самом запросе.