Hallo Borlander, vielleicht kannst du dich noch erinnern, dass wir letztens ein Posting hatte, in dem es darum ging, was schneller ist: mysql_fetch_row
oder mysql_fetch_object
Ich stehe gerade vor der entscheidung, auf was ich bauen soll, da ich zur zeit etwas umrüste.
Was würdest du nehmen?
Gruss Heinz
Homepage selbermachen 7.849 Themen, 35.585 Beiträge
Hallo Heinz,
ich kann mich noch gut dran erinnern.
Hab noch mal schnell die PHP-Referenz aufgeschlagen.
Zitat zu mysql_fetch_object:
"Unter Berücksichtigung der Ausführungsgeschwindigkeit ist diese Funktion identisch zu
mysql_fetch_array() und fast so schnell wie mysql_fetch_row() (der Unterschied ist unwesentlich)."
Die entscheidene Frage lautet dann natürlich: Wann macht sich unwesentlich bemerkbar?
Höchstwahrscheinlich erst bei sehr vielen zurückgegebenen Datensätzen.
Viel interessanter ist sicher der Nutzungsumfang beider Funktionen:
Zu mysql_fetch_row:
- ist etwas schneller
- Felder können nur über die Feldnummer angesprochen werden
- Will man nur eine Tabelle aller zurückgegebenen Datensätze (mit for-Schleife) Anzeigen braucht man wirklich nicht mehr.
- Braucht man allerdings ein spezielles Feld ist das ungünsting, falls sich die DB oder die Abfrage später mal ändert
Zu mysql_fetch_object:
- ist etwas langsamer
- Felder können nur über die die Object-Eigenschaft angesprochen werden
- Feldname kann AFAIK nicht als String übergeben werden
- Will man nur eine Tabelle aller zurückgegebenen Datensätze Anzeigen ist das aufwending, weil man alle Felder manuell festlegen muss und nicht mit der for-Schleife durchlaufen lassen kann. Ist bei späteren Änderungen wieder nicht so schön
- Braucht man allerdings ein spezielles Feld macht das nichts (solange sich der Feldname nicht ändert ;-) )
Noch mal zu mysql_fetch_array:
- ist genauso schnell wie ~object
- Felder sowohl über die Feldnummer als auch über den Feldnamen ansprechbar
- Feldname kann im Gegensatz zu ~object als String übergeben werden
- Will man nur eine Tabelle aller zurückgegebenen Datensätze Anzeigen funktioniert das genauso gut wie mit ~row
- Braucht man allerdings ein spezielles Feld kann man es wie bei ~object über den Namen ansprechen (und hat damit bei späteren Änderungen der DB oder Abfrage keine Zusätzliche arbeit)
- Vereint IMHO bei Zugriff auf die Felder die Vorteile von ~row und ~object bei gleicher Geschwindigkeit von ~object
Ich würde ~row wenn überhaupt nur zur Ausgabe von Tabellen verwenden, ansonsten ~array.
Zur Geschwindigkeit: Hat Xafford evtl. Erfahrung damit und kann uns verraten ob man den Unterschied wirklich merken (ich glaube kaum das man das merkt) kann?
CU Borlander