PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was sind die Vor- und Nachteile der Durchführung von Berechnungen in SQL im Vergleich zu Ihrer Anwendung?

Es hängt von vielen Faktoren ab - aber am wichtigsten:

  • Komplexität von Berechnungen (bevorzugen Sie komplexes Crunching auf einem App-Server, da dies out skaliert; statt eines DB-Servers, der nach oben skaliert )
  • Datenvolumen (wenn Sie auf viele Daten zugreifen/aggregieren müssen, spart dies auf dem DB-Server Bandbreite und Disk io, wenn die Aggregation innerhalb von Indizes erfolgen kann)
  • Bequemlichkeit (sql ist nicht die beste Sprache für komplexe Arbeit - besonders nicht großartig für prozedurale Arbeit, aber sehr gut für satzbasierte Arbeit; allerdings lausige Fehlerbehandlung)

Wie immer, wenn Sie tun Bringen Sie die Daten zurück zum App-Server, die Minimierung der Spalten und Zeilen wird zu Ihrem Vorteil sein. Stellen Sie sicher, dass die Abfrage abgestimmt und angemessen indiziert ist, um beide Szenarien zu unterstützen.

Zu Ihrer Notiz:

und dann die Datensätze durchlaufen

Schleife durch Datensätze ist in SQL fast immer das Falsche - das Schreiben einer mengenbasierten Operation wird bevorzugt.

Als allgemeine Regel , ich ziehe es vor, die Aufgabe der Datenbank auf ein Minimum zu beschränken "diese Daten speichern, diese Daten abrufen" - es gibt jedoch immer Beispiele für Szenarien, in denen eine elegante Abfrage am Server viel Bandbreite sparen kann.

Bedenken Sie auch:Wenn dies rechenintensiv ist, kann es irgendwo zwischengespeichert werden?

Wenn Sie eine genaue wollen "Welches ist besser"; codieren Sie es in beide Richtungen und vergleichen Sie es (beachten Sie, dass ein erster Entwurf von beiden wahrscheinlich nicht zu 100% abgestimmt ist). Aber berücksichtigen Sie die typische Verwendung:Wenn es in Wirklichkeit 5 Mal (getrennt) auf einmal aufgerufen wird, dann simulieren Sie das:Vergleichen Sie nicht nur ein einziges "1 von diesen mit 1 von denen".