Titel fasst es zusammen. Ich bin mit PHP einigermaßen gut dran und kann es mit Werten, die aus MySQL stammen, genau so machen, wie ich es brauche. Um mein Wissen zu erweitern, habe ich mich gefragt, ob es vielleicht eine effizientere Technik in der PHP wäre langfristig. Sind sie gleichwertig (weil sie am Ende ungefähr gleich viel verarbeitet werden), oder gibt es Fälle, in denen einer einen deutlichen Vorteil gegenüber dem anderen darstellt?
8
Antworten:
Es hängt sehr davon ab, was Sie mit den Datensätzen machen und wie Ihre Netzwerkarchitektur aussieht. Wenn die gespeicherte Prozedur beispielsweise die Gesamtmenge der von MySQL an PHP übertragenen Daten verringert und Sie eine relativ langsame Verbindung zwischen der PHP-Instanz und der Datenbank haben, kann Ihnen ein SP sicherlich helfen.
Ich würde empfehlen, dass Sie mit einigen der "schwereren" Manipulationen beginnen, die Sie an Ihren Daten auf der PHP-Seite vornehmen, sehen, was Sie als SP schreiben können, und diese dann vergleichen.
quelle
Ein Punkt für mehr Verarbeitung in der Datenbank ist, dass die Datenbank nicht optimieren kann, was sie nicht sieht. Wenn Sie beispielsweise eine Eigenschaft einer persistierten Klasse für alle Instanzen auf einen konstanten Wert setzen, ist die Leistung in der Datenbankebene definitiv besser.
Ein Punkt dagegen ist, dass Datenbanken gut für satzbasierte Operationen sind, aber nicht so gut für zeilenbasierte Operationen. Beispielsweise kann die Konvertierung einer UTC-Zeit in eine Ortszeit basierend auf einer pro Zeile variierenden Zeitzone in der Datenbank möglicherweise nicht so gut funktionieren wie in der App-Schicht.
quelle
Wenn das Ergebnis eine Aggregation ist (Summe, Durchschnitt, Anzahl), ist es normalerweise viel schneller, auf dem Datenbankserver berechnet zu werden, indem unnötige Kommunikation zwischen dem Server und dem Client vermieden wird. Das Ordnen und Gruppieren kann auch von Indizes profitieren und den Rechenaufwand verringern.
quelle