Hallo zusammen,
ich würde gerne meinen Code ein wenig optimieren bzw. wissen, ob meine Abläufe so sinnvoll sind, oder ob man es besser machen könnte.
Ich habe folgendes Szenario:
mySQL-Datenbank gefüllt mit Usern, diese möchte ich jetzt in einer Liste mit mehreren weiteren Infos darstellen. Ich bin dabei bisher immer wie folgt vorgegangen:
1) mysqli-Statement liest alle IDs der User aus der Tabelle aus (ggf. durch bestimmte Bedinungen begrenzt).
2) Die auswertende While-Schleife erstellt jeweils das entsprechende User-Objekt mit der ID.
3) Die User-Klasse, aus der die Objekte erstellt werden, ruft im Konstruktor erneut eine Datenbankabfrage auf, und liest mittels der übermittelten User-ID die entsprechenden Daten aus.
4) Nun habe ich also das erstellte Userobjekt bei jedem Schleifendurchlauf, und kann so die Infos vom Objekt abrufen.
=> Problem welches ich sehe: Zu viele Datenbankabfragen, welche jedes mal alle Daten der User (es ist nicht absehbar welche Daten davon letztendlich benötigt werden) ausliest. Ich arbeite bereits mit prepared Statements, welche scheinbar bei häufigen Aufrufen effizienter sein sollen, bin mir dennoch nicht sicher, ob der Ablauf so sinnvoll bzw. effizient ist.
Eine alternative Idee die ich hatte, alle Funktionen die Daten des Users auslesen als Statement an die Datenbank. Wenn ich also getName() vom Userobjekt aufrufe, ruft die Methode die Daten per Statement von der Datenbank ab und gibt sie zurück. Bei vielen benötigten Informationen würde dies jedoch eine Menge Abfragen bedeuten, oder doppelte Abfragen falls Daten mehrfach benötigt werden.
Wie kann mans besser machen bzw. wie löst man es generell am schönsten?
Viele Grüße
Viele Grüße
ich würde gerne meinen Code ein wenig optimieren bzw. wissen, ob meine Abläufe so sinnvoll sind, oder ob man es besser machen könnte.
Ich habe folgendes Szenario:
mySQL-Datenbank gefüllt mit Usern, diese möchte ich jetzt in einer Liste mit mehreren weiteren Infos darstellen. Ich bin dabei bisher immer wie folgt vorgegangen:
1) mysqli-Statement liest alle IDs der User aus der Tabelle aus (ggf. durch bestimmte Bedinungen begrenzt).
2) Die auswertende While-Schleife erstellt jeweils das entsprechende User-Objekt mit der ID.
3) Die User-Klasse, aus der die Objekte erstellt werden, ruft im Konstruktor erneut eine Datenbankabfrage auf, und liest mittels der übermittelten User-ID die entsprechenden Daten aus.
4) Nun habe ich also das erstellte Userobjekt bei jedem Schleifendurchlauf, und kann so die Infos vom Objekt abrufen.
=> Problem welches ich sehe: Zu viele Datenbankabfragen, welche jedes mal alle Daten der User (es ist nicht absehbar welche Daten davon letztendlich benötigt werden) ausliest. Ich arbeite bereits mit prepared Statements, welche scheinbar bei häufigen Aufrufen effizienter sein sollen, bin mir dennoch nicht sicher, ob der Ablauf so sinnvoll bzw. effizient ist.
Eine alternative Idee die ich hatte, alle Funktionen die Daten des Users auslesen als Statement an die Datenbank. Wenn ich also getName() vom Userobjekt aufrufe, ruft die Methode die Daten per Statement von der Datenbank ab und gibt sie zurück. Bei vielen benötigten Informationen würde dies jedoch eine Menge Abfragen bedeuten, oder doppelte Abfragen falls Daten mehrfach benötigt werden.
Wie kann mans besser machen bzw. wie löst man es generell am schönsten?
Viele Grüße
Viele Grüße
Kommentar