Ich mache heutzutage viel Rechenarbeit. Normalerweise bevorzuge ich diese Berechnungen in PHP und nicht in MySQL, obwohl ich weiß, dass PHP nicht gut ist. Ich dachte MySQL könnte schlimmer sein. Aber ich habe ein Performance-Problem festgestellt: Einige Seiten wurden so langsam geladen, dass das Zeitlimit von 30 Sekunden nicht ausreicht! Also frage ich mich, wo ist der bessere Ort, um die Berechnungen durchzuführen, und irgendwelche Prinzipien dafür? Vorschläge würden geschätzt.
Alles, was mit einem RDBMS (GROUPING, SUMMING, AVG) getan werden kann, wo die Daten auf der Serverseite gefiltert werden können, sollte im RDBMS erfolgen.
Wenn die Berechnung in PHP besser wäre, dann geht das gut, aber versucht nicht in PHP, wozu ein RDBMS gemacht wurde. SIE WERDEN VERLIEREN.
Ich würde empfehlen, Berechnungen auf Zeilenebene mit dem RDBMS durchzuführen.
Sie profitieren nicht nur von einer besseren Leistung, sondern machen Ihre Anwendungen auch portabler, wenn Sie zu einer anderen Skriptsprache wechseln müssen, sagen wir PHP zu Python, weil Sie die Daten bereits sortiert, gefiltert und verarbeitet haben Ihr RBDMS.
Es hilft auch dabei, Ihre Anwendungslogik zu trennen. Es hat mir geholfen, meine Controller sauberer und sauberer zu halten, wenn Sie in einer MVC-Umgebung arbeiten.
Behalten Sie einfach den Überblick über Ihre Engpässe. Wenn Ihre Tabelle gesperrt wird, weil Sie versuchen, einige Berechnungen auszuführen, befinden sich alle anderen in der Warteschlange, die darauf warten, die Daten in den ausgewählten Tabellen zu lesen / schreiben, und die Warteschlange wächst weiter.
MySQL ist in der Regel schneller bei der Verarbeitung Ihrer Befehle, aber PHP sollte in der Lage sein, einfache Probleme ohne großen Aufwand zu bewältigen. Das bedeutet natürlich nicht, dass Sie Ihre Datenbank mehrmals für dieselbe Berechnung pingen sollten.
Sie können besser Ihre Ergebnisse zwischenspeichern, wenn Sie einen Cron-Job haben und ihn einmal pro Tag / Stunde aktualisieren können (bitte tun Sie es nicht jede Minute, Ihr Hosting-Provider wird Sie wahrscheinlich hassen).
Mache so viel Filterung und Verschmelzung wie möglich, um die minimale Datenmenge in PHP zu bringen. Sobald Sie diesen minimalen Datensatz haben, hängt es von Ihrer Arbeit, der Serverlast und anderen Faktoren ab.
Wenn Sie in beiden auch etwas gleich gut machen können und der sql nicht zu komplex ist, um zu schreiben (und zu warten), dann tun Sie das. Für einfache Mathematik ist SQL in der Regel eine gute Wette. Für Stringmanipulationen, bei denen die Strings ungefähr gleich lang werden oder wachsen, ist PHP wahrscheinlich eine gute Wette.
Das Wichtigste ist, so wenig Daten wie möglich anzufordern. Die Manipulation der Daten, zumindest was SQL kann tun, ist sekundär zum Abrufen und Übertragen der Daten.
Native MySQL-Funktionen sind sehr schnell. Tun Sie also, was in Ihren Abfragen sinnvoll ist.
Wenn Sie mehrere Server haben (dh einen Webserver und einen DB-Server), beachten Sie, dass DB-Server viel teurer sind als Webserver. Wenn Sie also viel Verkehr haben oder einen sehr ausgelasteten DB-Server haben, tun Sie das nicht. Extras, die ebenso einfach / effizient auf einem Webserver verarbeitet werden können, um Verlangsamungen zu verhindern.
cmptrgeekken ist richtig, wir würden ein paar mehr Informationen brauchen. ABER wenn Sie Berechnungen durchführen müssen, die Datenbankabfragen betreffen oder Operationen an ihnen durchführen, vergleichen Sie die Felder der Datenbank mit den Zertifikaten, um die Datenbank dazu zu bringen. Das Ausführen spezieller Abfragen in SQL ist billig (soweit es die Zeit betrifft und dafür optimiert ist). Aber sowohl PHP als auch MySQL sind beide serverseitig, es wird nicht wirklich wichtig sein, wo Sie die Berechnungen durchführen. Aber wie bereits erwähnt, wenn es sich um Operationen mit Datenbankinformationen handelt, erstellen Sie eine kompliziertere SQL-Abfrage und verwenden Sie diese.