PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Quali sono i pro ei contro dell'esecuzione di calcoli in sql rispetto alla tua applicazione

Dipende da molti fattori, ma soprattutto:

  • complessità di calcoli (preferire eseguire scricchiolii complessi su un server app, poiché ciò aumenta esteriormente; piuttosto che un server db, che aumenta su )
  • volume di dati (se è necessario accedere/aggregare molti dati, farlo sul server db farà risparmiare larghezza di banda e su disco io se gli aggregati possono essere eseguiti all'interno degli indici)
  • convenienza (sql non è il linguaggio migliore per il lavoro complesso, specialmente non ottimo per il lavoro procedurale, ma molto buono per il lavoro basato su set; pessima gestione degli errori, però)

Come sempre, se lo fai riportare i dati all'app-server, ridurre al minimo le colonne e le righe sarà a tuo vantaggio. Assicurarsi che la query sia ottimizzata e indicizzata in modo appropriato aiuterà entrambi gli scenari.

Per la tua nota:

e quindi scorrere i record

Ciclo continuo through record è quasi sempre la cosa sbagliata da fare in sql:è preferibile scrivere un'operazione basata su set.

Come regola generale , preferisco ridurre al minimo il lavoro del database "memorizza questi dati, recupera questi dati" - tuttavia, ci sono sempre esempi di scenari in cui una query elegante sul server può far risparmiare molta larghezza di banda.

Considera anche:se questo è computazionalmente costoso, può essere memorizzato nella cache da qualche parte?

Se vuoi un preciso "che è migliore"; codificalo in entrambi i modi e confrontalo (notando che una prima bozza di entrambi probabilmente non è ottimizzata al 100%). Ma tieni conto dell'uso tipico:se, in realtà, viene chiamato 5 volte (separatamente) in una volta, simulalo:non confrontare solo un singolo "1 di questi contro 1 di quelli".