Performance: PHP oder MySQL
Dieter
- php
2 Rouven0 Jörg Peschke
Hallo,
ich habe eine Frage, was die Performance von PHP vs. MySQL angeht.
Manche Befehle kann man ja als SQL genauso wie in PHP Schreiben.
Und zwar kann man ja in der WHERE Kriterie eine weiter Tabelle abfragen, oder sollte man diese Abfrage auslagern?
Bsp:
$erg = mysql_query(SELECT id FROM db);
while($row = mysql_fetch_row($erg) $list .= $row[0].",";
$abfrage = "SELECT * FROM table WHERE userid IN($list);";
Oder man kann es ja verkürtzt so schreiben:
$abfrage = "SELECT * FROM db AS tab1 WHERE tab1.userid IN(SELECT tab2.id FROM db AS tab2);";
Ist hierbei die Version mit dem Umschritt über PHP schneller und Performancesparender oder sollte man lieber die verkürtzte Form benutzen.
Und wie sieht es mit der Kompilität aus, gibt es MySQL Versionen die soetwas nicht erlauben?
Und ist es allgemein empfehlenswerter kleine Umschritte per PHP zu gehen oder sofern es geht, dies per MySQL lösen?
Viele Grüße
Dieter
Hi,
also nach meiner Erfahrung sollte man die Datenbank ruhig die Arbeit machen lassen für die sie geschaffen wurde. Und eigentlich gehört so eine Unterabfrage schon dazu, demnach mein Votum: Keinen Umweg über ein Skript, wo du erst so Sachen wie Stringoperationen, Kontrollstrukturen etc. brauchst.
Dein Kompatibilitätshinweis ist allerdings berechtigt, zwar sind diese Art von Subselects SQL-Standard, allerdings gibt es ältere MySQL-Versionen die damit Probleme haben können.
MfG
Rouven
Hallo,
Ist hierbei die Version mit dem Umschritt über PHP schneller und Performancesparender oder sollte man lieber die verkürtzte Form benutzen.
Ich schliesse mich Rouven an. Im Zweifelsfall alles die DB machen lassen:
In jedem DB-System gibt es viele verschiedene Mechanismen, die zur Perfromance beitragen sollen (Cachen von Anfragen, Anfrageoptimierung,...). Wenn Du die Datenverarbeitung weitgehend von der Datenbank machen laesst, kannst Du sicher sein, dass sie versucht, das ganze performance-mäßig so gut es geht zu optimnieren (hängt natürlich davon ab, wie ausgefuchst die Datenbank programmiert ist).
Ein PHP-Skript hingegen ist was das betrifft "dumm", für PHP ist ja die DB eine Blackbox, es hat keine Ahnung, wo welche Daten liegen und kann deswegen auch kaum etwas in der Anfrage optimieren.
Gruesse,
Joerg