Homepage selbermachen 7.849 Themen, 35.585 Beiträge

@ Borlander bezüglich mysql_fetch_row

Heinz_Malcher / 4 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
Borlander Heinz_Malcher „@ Borlander bezüglich mysql_fetch_row“
Optionen

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
bei Antwort benachrichtigen