Если вы делаете основную арифметическую операцию по расчетам в ряд, а затем сделать это в SQL. Это дает вам возможность инкапсулировать результаты в виде или хранимой процедуре. Во многих базах данных это также дает возможность параллельного выполнения операторов (хотя производительность не является проблемой с таким количеством строк данных).
Если вы выполняете операции между строками в MySQL (например, получение max для столбца), тогда баланс более четный. Большинство баз данных поддерживают простые функции для этих вычислений, но MySQL этого не делает. Добавленная сложность запроса дает некоторый вес для выполнения этих расчетов на стороне клиента.
На мой взгляд, наиболее важным соображением является ремонтопригодность кода. Используя базу данных, вам необходимо включить бизнес-правила в самой базе данных (какие сущности связаны с другими объектами, например). Основная проблема с поддержанием кода заключается в том, что бизнес-логика распространяется через различные системы. Я предпочитаю иметь подход, когда такая логика максимально сжата, создавая очень четкие API-интерфейсы между разными слоями.
Для такого подхода «чтение» доступа к базе данных будет осуществляться через представления. Логика, о которой вы говорите, войдет в представления и будет доступна любому пользователю базы данных - обеспечивая согласованность между различными функциями с использованием базы данных. «запись» будет осуществляться через хранимые процедуры, гарантируя, что бизнес-правила будут проверяться последовательно и что операции будут регистрироваться соответствующим образом.
Как это сокращает сетевой трафик? Передаваемые данные будут фактически увеличиваться с БД на сервер приложений, потому что вычисления, выполненные в запросе, означают дополнительное количество столбцов и, следовательно, дополнительные данные. – Ravi
@ Ravi Возможно, я пропустил точку, но, скажем, для вычисления суммы двух столбцов, я делаю 'SELECT a + b' вместо' SELECT a, b', выполняя добавление на языке хоста, я сократил сеть трафика почти на 50%. –
Согласовано. Мой ответ основан на общем случае (такие неприятные вещи, как «ORDER BY RAND()» - например) –