10 Jahre
Gespräch vereinbaren
Werbung
FeatValue
Das Kundenportal für Agenturen und Freelancer
Integriert sich in das bestehende Projektmagement-System
Kostenlos registrieren

PHP-Geschwindigkeitstest: mysql_fetch_row vs. mysql_fetch_assoc

PHP Logo

PHP Logo

mysql_fetch_row und mysql_fetch_assoc sind PHP-Funktionen zum Auslesen der Daten von Datenbankabfragen. Sie werden im Quellcode oft benötigt und deswegen sollte man sich für die richtige Funktion entscheiden.

mysql_fetch_row liefert ein Array, mit welchem man über den Spaltenindex auf die Daten zugreifen kann. In mysql_fetch_assoc ist kann man über die Spaltennamen zugreifen.

Doch was ist wirklich schneller? Der folgende Test soll und eine Antwort darauf geben.

Funktion mysql_fetch_assoc:

$Ergebnis = mysql_query(„SELECT * FROM tabelle LIMIT 0,100000“);
while($row=mysql_fetch_assoc($Ergebnis)){
$test = $row[’spalte1′].$row[’spalte2′].$row[’spate3′].$row[’spalte4′];
}

Funktion mysql_fetch_row:

$Ergebnis = mysql_query(„SELECT * FROM tabelle LIMIT 0,100000“);
while($row=mysql_fetch_row($Ergebnis)){
$test = $row[0].$row[1].$row[2].$row[3];
}

Dieser Code wurde mit 100, 1.000 und 100.000 Datensätzen getestet (das Limit wurde geändert). In der Tabelle waren 250.000 Datensätze vorhanden. Jeder Test wurde 15-mal gemacht und die hier stehenden Daten sind die Durchschnitte.

Ergebnisse

100 Datensätze

mysql_fetch_row: 0,0018270969391 Sekunden

mysql_fetch_assoc: 0,0030710220337 Sekunden

mysql_fetch_row ist 40% schneller als mysql_fetch_assoc

1.000 Datensätze

mysql_fetch_row: 0,0130335013072 Sekunden

mysql_fetch_assoc: 0,0126913388570 Sekunden

mysql_fetch_assoc ist 3% schneller als mysql_fetch_row

100.000 Datensätze

mysql_fetch_row: 0,9411172231038 Sekunden

mysql_fetch_assoc: 1,2011907100678 Sekunden

mysql_fetch_row ist 22 % schneller als mysql_fetch_assoc

Kompletter Test

Den kompletten Test mit allen Durchläufen kannst du hier herunterladen:

http://blog.stevieswebsite.de/tests/mysql_fetch_row_vs_mysql_fetch_assoc.xls

Fazit

mysql_fetch_row ist schneller als mysql_fetch_assoc. Wenn Du also auch mit Indexen arbeiten kannst, solltest du das tun. Wenn du die Spaltenbezeichnungen trotzdem sehen willst, kannst du diese einfach in den SQL-Befehl packen.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern