Tach!
Mir gehts jedoch darum, für _eine_ Abfrage nicht ein großes Array in den Hauptspeicher zu legen.
Für eine Abfrage braucht es gar kein Array, aber das hab ich ja schon gesagt.
Ein sich selbst füllendes Array für die Anfrage nach nur einem Ergebnis ist nicht gerade ein intentionsgemäßer Gebrauch.
Sorry, Missverständnis: Das Array wird nicht 'gefüllt'. Es ist schon voll ;)
Es tut so, indem es im Hintergrund die Daten holt.
Das Array wird 'gebunden', d.h., es ist 'leer'. Ein Code
$class = $CFG['/index.html']['class'];
wird dieses Array NICHT befüllen, sondern nur den Wert zurückliefern.
Also, wenn es sich nicht im Hintergrund die Values merkt, um bei der nächsten Abfrage nach demselben Key nicht wieder erneut die Daten holen zu müssen, dann entfernt es sich noch ein weiteres Stück von meinem Verständnis von sinnvoller Verwendung.
Du meinst, viele Einzelabfragen (versteckt in einem Array-Zugriff) sind besser als eine einzige Abfrage nach allen benötigten Werten? Hast du das mal gegeneinander gemessen?
Nein. Es gilt, die Balance zwischen Performance und Hauptspeicher zu halten, das ist immer eine Gratwanderung. Freilich gibts fürs Routing nur die eine Abfrage auf die Klasse, logisch, ein Request => eine Klasse.
Du solltest ja auch nicht die gesamte Datenbank in den Speicher lesen, sondern versuchen, mit so wenig wie möglich Requests die benötigten Daten und nicht unmäßig mehr zu besorgen.
Wenn du _eine_ Ergebnismenge erzeugst, kann die mysql(/i/nd)-Extension diese in einem Rutsch in den Speicher holen (das macht sie per Default). Fetchen findet dann von dort statt, ist also nur noch ein Speicherzugriff. Wenn du hingegen ein Prepared Statement mehrfach ausführst, muss dazu jedes Mal ein Roundtrip zum DBMS ausgeführt werden.
dedlfix.