Quali sono i pro e i contro di eseguire calcoli in sql vs. nella tua applicazione

shopkeeper tabella del shopkeeper ha i seguenti campi:

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

Diciamo, ho la tabella sopra. Voglio ottenere i record di ieri e generare un rapporto facendo stampare l’importo in centesimi.

Un modo per farlo è eseguire calcoli nella mia applicazione java ed eseguire una semplice query

 Date previousDate ;// $1 calculate in application Date todayDate;// $2 calculate in application select amount where createddate between $1 and $2 

e quindi scorrere i record e convertire l’importo in centesimi nella mia applicazione java e generare il report

Un altro modo è come eseguire calcoli nella query sql stessa:

 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()) 

quindi scorrere i record e generare il report

In un modo, tutta la mia elaborazione viene eseguita nell’applicazione java e viene generata una query semplice. In altri casi tutte le conversioni e i calcoli vengono eseguiti nella query Sql.

Il caso d’uso di cui sopra è solo un esempio, in uno scenario reale una tabella può avere molte colonne che richiedono l’elaborazione del tipo simile.

Puoi dirmi quale approccio è migliore in termini di prestazioni e altri aspetti e perché?