Hello,
Hast du eine konkrete und zeitgemäße Begründung, warum man SELECT * vermeiden soll?
Klar.
Es ist einigen meiner Klienten schon oft genug passiert, dass sie ihren Datenbankserver zum Stehen gebracht haben (oder den PHP-Parser ausgekickt haben).
Wenn Du aus einer ewig breiten Tabelle eigentlich nur zwei Spalten benötigst und mit "select * " abgefragst, dann bekommst Du eine entsprechend große Ergebnismenge. Die muss zwischengespeichert werden. Wenn dann genügend viele Zeilen abgefragt werden und auch noch gleichzeitige Anfragen kommen, wird geswappt und dann bricht die Performance zusammen.
Das kann man dann entweder durch Speichertuning oder durch Verbesserung der Statements korrigieren :-)
In real genutzten Systemen ist das schneller der Fall, als man denken mag.
Genauso tödlich ist es, die Resultsets nicht sofort nach beendeter Nutzung wieder freizugeben, wenn das Script noch ein eWeile länger laufen muss danach. Wenn es sofort nach der Datenoperation beendet ist, macht sich das nicht so bemerkbar, da ja die Ressourcen am Ende des Scriptes ohnehin automatisch wieder freigegeben werden.
Habe ich es jetzt in Deinem Sinne ausreichend plastisch geschildert, warum man Ergebnismengen klein halten soll und frühzeitig wieder freigeben soll? ;-))
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg