Det beror på många faktorer - men mest avgörande:
- komplexitet i beräkningar (föredrar att göra komplex crunching på en app-server, eftersom det skalas ut; snarare än en db-server, som skalar upp )
- Datavolym (om du behöver komma åt/samla ihop mycket data sparar du bandbredd om du gör det på db-servern, och disk io om aggregaten kan göras i index)
- bekvämlighet (sql är inte det bästa språket för komplext arbete - speciellt inte bra för procedurarbete, men mycket bra för set-baserat arbete, dock usel felhantering)
Som alltid, om du gör föra tillbaka data till app-servern, minimering av kolumner och rader kommer att vara till din fördel. Att se till att frågan är avstämd och korrekt indexerad hjälper båda scenarierna.
Om din anteckning:
och gå sedan igenom posterna
Slinga genom poster är nästan alltid fel sak att göra i sql - att skriva en uppsättningsbaserad operation är att föredra.
Som en allmän regel , jag föredrar att hålla databasens jobb till ett minimum "lagra denna data, hämta denna data" - dock finns det alltid exempel på scenarier där en elegant fråga på servern kan spara mycket bandbredd.
Tänk också på:om detta är beräkningsmässigt dyrt, kan det cachelagras någonstans?
Om du vill ha en exakt "vilket är bättre"; koda det åt båda hållen och jämför det (notera att ett första utkast av någon av dem sannolikt inte är 100 % avstämt). Men räkna med typisk användning till det:om det i verkligheten anropas 5 gånger (separat) på en gång, simulera det:jämför inte bara en enda "1 av dessa mot 1 av dessa".