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