Schau mal nach "nebenan", da gibt EKKi zu, dass er SELECT * täglich verwedet. Also kann es wohl mit dem "seltenst" wohl doch nicht ganz stimmen. Er hat also mit genügend Fällen zu tun, wo er es einsetzt. Ist seine Argumentation dann nicht doch ein wenig widersprüchlich zu seinen Handlungen.
Ich hab das gelesen, es handelt sich genau um _einen_ Fall, dann wenn er eine AdHoc Abfrage macht. Ich tippe in phpmyadmin auch nicht jedesmal alle Felder ein, deren Werte ich Wissen will.
Ich hatte davor oft eine Fehlermeldung wegen doppelter Feldnamen oder auch mir davor kaum Gedanken um die Menge übertragenen Daten gemacht.
Daran ist aber nicht SELECT * schuld sondern deine anfängliche Ignoranz dem Thema gegenüber. Diese anfängliche Ignoranz ist ja auch verständlich, das geht wohl den meisten Anfängern so, dass sie sich erstmal auf das Funktionieren konzentrieren und den Blick für das große Ganze und Zusammenhänge noch nicht kennen. Diese Wissenslücken zu füllen sollte man anregen, ohne Frage, aber bitte nicht durch (einseitige) Thesen/Regeln.
Da finde ich dich jetzt widersprüchlich. Wenn er sagt "in den seltesten Fällen" ist das in dem Fall vielleicht noch mal der Nachdruck sich darüber Gedanken zu machen ob es hier wirklich gebraucht wird. Also ob sein konkreter Fall einer der selten Fälle ist. Und wenn er die Wissenslücke schliessen will kann er nachfragen, z.b. in welchen Fällen es sinnvoll sein kann alle Felder zu selektieren.
Erst durch diese Hinweise habe ich mich überhaupt damit beschäftigt. Vorher hab ich auch überall select * geschrieben.
Hast du das dann auch zum Anlass genommen, das was vorher schief lief zu analysieren, so dass du aus den Fehlern gelernt hast und nicht einfach nur zufälligerweise durch die in manchen Fällen einfach nur umständlichere Notation der einzelnen Felder ein paar Fehler weniger machst, aber nicht genau weißt warum das so ist?
Keine Ahnung was du jetzt damit meinst, ich habe das gemacht um die Menge der Daten, die durch automatische Prozesse auch immer in die Anwendung einfliessen, geringer zu machen. Da ist die Analyse nicht so aufwendig um zu erkennen, dass wenn ich nur fünf statt fünfzehn Felder habe der Aufwand deutlich geringer ist.
Aber vielleicht liegt der Unterschied auch in der unterscheidlichen Umgebungen begründet. Ich kann mir vorstellen, dass wenn ich eine Desktopanwendung entwickle, mich dieser overhead kaum stören würde. Im gegensatz dazu ist es im Rahmen einer Webanwendung, wo sich jedes Byte Millionenfach potenzieren kann, etwas anderes.
Millionenfach? Na so viele Besucher hat der typische SELECT-*-nicht-darüber-nachgedacht-Anwender nun auch wieder nicht.
Es geht nicht um Besucher, aber in der Regel hast du nicht eine Abfrage pro Seitenaufruf sondern viele und selbst geringe Besucherzahlen können, wenn diese unerwartet parallel stattfinden, dann einen Server bzw. in dem Fall fast immer ein einfaches Webhosting Angebot, schnell in die Knie zwingen.
.. Man erstelle sich exakt angepasste Views, was die Feldauflistung angeht, und muss sie so nicht bei jeder Query erneut in voller Länge übertragen, stattdessen nur den *.
Das erfordert dann aber erstmal ein erweitertes Wissen über views und wann diese sinnvoll angewendet werden. Ist also eine Aussage die sich erst nach Nachfrage tätigen läßt.
Wenn ein Tipp so viele Nebenwirkungen haben kann, dass ihre Erklärung ausufert, würde ich ihn ungern noch als solchen bezeichnen. "Verwende UTF-8" hört sich nach einem einfachen Tipp an, zieht aber nicht selten eine ganze Latte an zu erlernendem Wissen nach sich. Ein Verweis auf Informationsquellen wäre dabei angebracht, und zwar möglichst auf solche, die viele der Fallstricke berücksichtigen und nicht einfach nur ein "du kanns ja googeln, wenn du was zu dem Stichwort wissen willst". Damit findet man ohne Zweifel alle Informationen, weiß aber auch nicht immer, was man alles braucht. Trivialfälle, bei denen man nach dem Lesen der ersten Fundstelle bereits alles erfährt, kann man hingegen problemlos auf Google "abschieben".
Das klingt so, als ob du in deinem Wissengebiet immer alles weißt und Internetfundstellen kennst, wo man das entsprechend nachlesen kann.
Ich kann das von mir nicht behaupten, aber mir macht es auf der anderen Seite auch Spaß nach Informationen zu suchen, eben um die verschiedenen Aspekte einer Sache zu erlernen. Aber wenn es nur darum geht, _das_ einzig wahre Richtige zu vermitteln, dann wäre ich am falschen Ort, weil diesen Anspruch habe ich nicht und kann ich auch nicht erfüllen.
Ich mache Fehler und lerne immer noch dazu, kann also nie ausschliessen, dass ich eine, in deinen Augen wohl einseitige und verallgemeinerte Aussage treffe, weil sie meinem aktuellen Wissenstand und Erfahrung entspricht.
Das liegt aber sicher auch daran wie intensiv man sich mit einem Thema beschäftigt und wie und wo man das lernt. Das es darin hier große Unterschiede gibt läßt sich nicht bestreiten und so ist es auch klar, dass die Antworten sehr unterschiedlich ausfallen, aber auch unterschiedlich interpretiert werden.
Während dir und Ilja die Antwort zu flach und zu kurz gegriffen erscheint, ist sie für mich ein wertvoller Hinweis auf eine Problematik, mit der ich mich u.U. noch nicht beschäftigt habe und ich bin dankbar, dass ich ihn bekommen habe (also nicht jetzt, sondern überhaupt).
Das eine verallgemeinerung nie 100% stimmt (die ich in der Aussage auch so gar nicht gesehen hatte), sollte man natürlich Wissen, das ist genau wie mit der Behauptung hier im Forum würden HTML Tabellen gehaßt, was so ja auch nicht stimmt.
Und solange eine Frage oder Aussage allgemein gehalten wurde, sind allgemeingehaltende Antworten das was ich erwarte. Wenn es dann konkret wird, lassen sich sicher auch Anwendungen für die seltensten Fälle finden oder eben nicht, je nachdem.
Damit sind wir dann bei der anderenorts diskutierten Frage: Welche Antwort darf man auf eine Frage erwarten/geben?
Ja, sieht so aus. Aber um das auf den aktuellen Thread zu beziehen, dir wäre es lieber gewesen EKKI hätte gar nichts geschrieben und bobi lebt weiterhin mit der in selfhtml vermittelten Wissen, dass ein select * eine sinnvolle Abfrage ist, die sich allgemein (ingobar hat diesen Vorschlag ja nicht relativiert und damit verallgemeineinert) so einsetzen läßt?
Ich finde erst durch die Antwort von EKKI wurde diese Aussage relativiert und der OP hat die Möglichkeit sich darüber Gedanken zu machen, da er ansonsten vermutlich gar keine andere Information bekommen hätte.
Struppi.