Если вы читаете из базы данных, сортированный вывод не должен быть таким «дорогим», если у вас есть соответствующие индексы.
Но иногда для сложных запросов оптимизатору SQL очень сложно применять индексы. В этом случае БД просто накапливает результаты во временной таблице и сортирует их для вас прозрачно.
Маловероятно, что вы могли бы соответствовать уровню оптимизаций, введенных в ваш движок БД; но если ваша проблема возникает из-за того, что вы выполняете некоторую постобработку данных, которая сводит на нет любую сортировку, выполняемую БД, у вас нет другого выбора, кроме как сортировать ее самостоятельно.
Опять же, проще всего было бы использовать БД: просто записать во временную таблицу с соответствующим индексом и вывести из нее дамп.
Если вы уверены, что данные всегда будут помещаться в ОЗУ, вы можете отсортировать их в памяти. Это единственный случай, когда вы можете быть в состоянии превзойти механизм БД, просто потому что вы знаете, что вам не понадобится доступ к HD.
Но это много "если". Лучше оставайся с БД