Каковы плюсы и минусы выполнения вычислений в sql vs.в вашем приложении

таблице продавца со следующими полями:

id (bigint),amount (numeric(19,2)),createddate (timestamp)

Допустим, у меня есть приведенная выше таблица. Я хочу получить записи за вчерашний день и сгенерировать отчет, напечатав сумму в центах.

Один из способов сделать это - выполнить вычисления в моем Java-приложении и выполнить простой запрос

Date previousDate ;// $1 calculate in application

Date todayDate;// $2 calculate in application

select amount where createddate between $1 and $2 

, а затем просмотреть записи и преобразовать сумму в центы в моем Java-приложении и сгенерировать отчет

Другой способ похож на выполнение вычисления в самом sql-запросе:

select cast(amount * 100 as int) as "Cents"
from shopkeeper  where createddate  between date_trunc('day', now()) - interval '1 day'  and  date_trunc('day', now())

, а затем перебрать записи и сгенерировать отчет

В одном случае вся моя обработка выполняется в приложении Java, и запускается простой запрос. В другом случае все преобразования и вычисления выполняются в запросе Sql.

Вышеупомянутый вариант использования является всего лишь примером, в реальном сценарии таблица может иметь много столбцов, требующих обработки аналогичного типа.

Подскажите, пожалуйста, какой подход лучше с точки зрения производительности и других аспектов и почему?

146
задан Jaydles 19 February 2015 в 14:47
поделиться