Для контекста, хотя область применения не ограничивается этим, я использую CakePHP 2.4.4 с функцией разбиения на страницы. Это запрашивает результаты (с ORDER, LIMIT и OFFSET, я полагаю), и как только результаты возвращаются, я вычисляю поле. В этом случае пользователь вводит почтовый индекс, и после возврата результатов географическое расстояние между почтовым индексом поиска и почтовыми индексами результатов рассчитывается индивидуально. Я не могу заказать по этому, так как у меня есть только одна страница результатов за раз.
Как бы я сделал это вручную? Я думаю, что мог бы получить все результаты в запросе, затем рассчитать расстояние для каждого результата, затем упорядочить, а затем удалить те, которые не на этой странице, но это кажется очень дорогим. Автотрейдер, например, выдает сотни тысяч результатов, и их можно упорядочить по расстоянию, рассчитать тут же.
Математика в моем проекте выполняется на PHP, но я ожидаю, что это нужно переместить в запрос, но я думаю, что это делает его дорогим.
Как упорядочить все результаты по вычисляемому полю, фактически не хранящемуся в базе данных?