dedlfix: MySQL Performance und Prepared Statements Fragen

Beitrag lesen

echo $begrüßung;

  1. Wie seht ihr das hinsichtlich der Performance? Ich wollte eigentlich der Übersicht halber alle Prepared Statements in einer Datei haben.
    Ist dies vielleicht hinsichtlich der Last für den MySQL Server nicht optimal weil er ja bei jedem Refresh der Seite immer alles "einlesen" muss?

Ja, wenn die PS immer wieder abgearbeitet werden, auch wenn sie gar nicht benötigt werden, dann ist das unsinnig. Jedes PS muss ja erstmal zum Server gelangen und dann werden dafür auf Server und Client Daten vorgehalten.

Wäre es besser die jeweilige Prepared Statement in die PHP Datei einzufügen wo sie auch benötigt wird?

Ich sehe es als besser an, die Daten beschaffenden Teile zu kapseln. Wenn die Seite X die Datenstruktur Y benötigt, dann ruft sie eine Funktion getDataY() auf, und bekommt was sie will, ohne sich näher drum zu kümmern, wie die Abfrage vonstatten geht. Die jeweilige getData-Funktion wird also nur im Bedarfsfall aufgerufen (und alle anderen nicht) und kann nun ihrerseits die Daten wo auch immer her und wie auch immer beschaffen. Wenn sie dazu PS verwendet, stehen diese innerhalb der Funktion.

  1. Eine Tabelle "userdata" hat ca. 20 Spalten.
    An verschiedenen Stellen in der Anwendung werden immer wieder unterschiedliche Infos aus Spalten benötigt.

Hier bietet sich an, einmalig ein User-Objekt zu erstellen, dessen Eigenschaften dann von den jeweiligen Stellen angesprochen werden.

Ich habe das jetzt vereinfacht indem ich einmal ALLE 20 Spalten im Select aufnehme. Dann brauche ich nur noch ein Prepared Statement und kann später gezielt mit "Fetch" die Spalten ansprechen die ich brauche.
Meine Frage ist nur: Ist es ein großer Unterschied für den Server ob man immer gleich 20 Spalten abfrägt oder nur eine oder zwei?

Ein Roundtrip ist weniger aufwendig als viele. Die zu übertragenden Daten einer 20-Spalten-Abfrage werden sich wohl im Bereich weniger (k)B bewegen und das fällt kaum ins Gewicht. Dass dann ein paar Spalten umsonst abgefragt wurden ist auch nicht schlimm. Wenn du hingegen in dem einen Script immer nur 2 Spalten benötigst und nichts weiter, kann man dafür ja überlegen, eine eigene Abfrage zu erstellen. Dazu sollte man den Code-Pflegeaufwand zweier Funktionen gegen den Daten-Overhead einer 20-Spalten-Abfrage abwägen.

echo "$verabschiedung $name";