Was ist schneller? PHP oder MySQL?

Hallo liebe Leut!

Mich quält schon seit Jahren die frage, was eigentlich schneller ist, MYSQL oder PHP?

Ich hab das Problem, dass ich das Durchschnittsalter von ca 300 Personen errechnen will. Nehm ich mir da jetzt die Geburtsdaten von allen aus der Datenbank und verarbeite das in PHP, oder mach ich eine komplizierte Datenbankanfrage, die mir gleich einen Wert ausspuckt?

Wenns jemand interessiert, wie ich das mach, schreibts kurz, dann kopier ich den Code noch rein.

Gruß
ZR
 
Ich würde die Berechnung durch die SQL-Abfrage durchführen lassen, zudem die Abfrage nicht so komplex ist und MySQL auch entsprechende Funktionen zur Verfügung stellt.

snuu
 
Hi!

Also wenn Du nur das Durchschnittsalter der 300 Leute haben willst, dann mach es am einfachsten über MySQL.

SELECT AVG(Alter) from Tabelle;
Diese Funktion berechnet den Durchschnitt der Werte in "Alter".

redlama
 
Hm, also ich würde das mit php machen, aber ich denke du wirst den unterschied eh nicht merken.
Grundsätzlich kommt es eh darauf an wie optimal bzw. nicht optimal du deine Abfrage bzw. den PHP Algo gestalltest.

Bei mysql könntest du dir ja anzeigen lassen wie lange er für die Abfrage braucht.
 
Das würde dann aber eher so aussehen:
Code:
SELECT 
AVG(
IF(MONTH(NOW()) < MONTH(sp.gebdat)
,YEAR(NOW())-YEAR(sp.gebdat)-1
,IF((MONTH(NOW()) = MONTH(sp.gebdat)) AND (DAYOFMONTH(NOW()) < DAYOFMONTH(sp.gebdat))
,YEAR(NOW())-YEAR(sp.gebdat)-1
,YEAR(NOW())-YEAR(sp.gebdat))))
AS alt
            FROM `hbs_saison_verein_spieler` AS svs INNER JOIN `hbs_spieler` AS sp
              ON sp.spieler_id = svs.spieler_id
            WHERE svs.saison_id = '2' AND svs.verein_id = '15'
              AND (svs.rolle != 'z' AND svs.rolle != 'e')
              AND sp.gebdat IS NOT NULL
            GROUP BY svs.saison_id;

Weil ich nur die geburtsdaten speichere. Das Alter ändert sich ja jeden Tag.
 
Original geschrieben von Sinac
Bei mysql könntest du dir ja anzeigen lassen wie lange er für die Abfrage braucht.
Wie
Dann kann ich ja selber schauen, ob das MySQL-Skript schneller ist, oder das PHP-Skript.

Ich bräuchte dann halt eine Anzeige für den MySQL-Wert und eine für den PHP-Wert
 
Naja, ich will ja nicht wissen, was du mit dem Theoretischen Datum :
03.02.0035 anfangen willst?! Nur theoretisch, weil dabei steht, das diese Funktion keine daten vor 15xx (weiß nicht mehr genau) handeln kann.
Die funktion dient eher dazu, von einem Datum 2 Jahre und 4 Monate abzuziehen.

Keine Angst, ich habs mit der Funktion auch schon prbiert und so unelegant find ich meine Lösung nicht ;-)

Aber weiß denn jemand, wie ich die dauer einer MySQL-Query in der Datenbank rausfinde Also nicht mit microtime() in PHP.
 
Lass Dir doch einfach vor und nach Deinem SELECT-Statement die aktuelle Zeit anzeigen "SELECT CURTIME()" und berechne einfach die Differenz!
 
Zurück