Это одна из моих любимых мозолей - люди, которые возвращают все данные из базы данных.
В этом нет абсолютно никакой необходимости, если вы не ведете отчетность.
Если вы ведете отчетность, то вам необходимо расширить возможности вашего оборудования, чтобы база данных могла справиться с ситуацией. Это может также включать настройку базы данных, перестановку таблиц, переиндексацию, регулярную перестройку индексов, обновление статистики, архивирование старых данных и т. Д.
Если вы НЕ ведете отчетность, тогда начните ограничивать объем данных, которые можно запрашивать одновременно. Пользователям не нужно видеть огромное количество данных одновременно. Они должны видеть дискретные объемы данных, представленные в управляемой и последовательной форме.
Еще одно эмпирическое правило, которое мне нравится соблюдать, это: пусть ваш сервер баз данных сделает всю работу, он создан для манипулирования большим количеством данных, это то, в чем он хорош, и он должен иметь возможность это делать. . Передача данных клиенту, а затем попытка манипулировать этими данными на клиенте - глупая вещь. Если ваши клиентские машины более мощные, чем сервер баз данных, у вас есть проблемы.