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".