phpbar.de logo

Mailinglisten-Archive

[php] schnellster Datenbank-Layer

[php] schnellster Datenbank-Layer

Martin Spuetz mas at spuetz.ath.cx
Mit Mar 28 16:12:16 CEST 2007


Marian Steinbach wrote:
> Ich habe erst vor ein paar Tagen einen einfachen Vergleich zwischen
> den mysql_*-Funktionen, MDB2 und PDO (unter PHP 5.2.1) gemacht und
> überrascht festgestellt, dass die mysql_* Funktionen die langsamste
> Variante von den dreien war. Am schnellsten war PDO, insbesondere
> durch funktionsloses Iterieren durch Ergebnis. (Sprich: anstelle von
> while ($row = mysql_fetch_row()) nimmt man in PDO "foreach". Wer dazu
> noch das gesamte Abfrageergebnis in einem einzigen Aufruf in ein
> PHP-Array zieht, ist noch schneller.).

Ich würde foreach nicht unbedingt benutzen:

$sql = "SELECT * FROM table WHERE id = ?";
$query = $pdo->prepare($sql);
$query->execute(array($id));

foreach ($query->fetch(PDO::FETCH_ASSOC) as $row) {

Wenn du jetzt keinen passende Tupel in der DB hast, liefert fetch()
false zurück, damit kann forech nix anfangen und wirft einen PHP Fehler.

fetchAll() dürfte langsamer sein, ich würde hier auch also auch auf
while ($query->fetch() setzen.

Gruss,
Martin



php::bar PHP Wiki   -   Listenarchive