Wenn er sagt, dass man in den seltesten Fällen alle Felder braucht, ist das nicht ausgewogen und neutral?
Ist es nicht, weil ich es so extremisiert nicht als richtig erachte. "Seltenst" wäre für mich irgendwo bei 99%. Vielleicht sind meine Datenmodelle auch besser angelegt, so dass ich auch bei einem SELECT * nicht viel überflüssiges bekomme.
Ja, das mag sein. Die meisten Abfragen, die ich verwende sind joins über mehrere Tabellen, es werden dort in der Regel aber nur eine Handvoll Felder davon benötigt und eigentlich nie alle aller Tabellen.
... (Ein Problem ist das auch nur, wenn man sich der Auswirkungen nicht bewusst ist.)
Naja, dann war doch EKKI Hinweis, dass du damit alle Felder aller Tabellen selektierst, die unter Umständen gar nicht gebraucht werden, doch ein sehr guter Hinweis.
Ich rate dazu, anwendungsfallabhängig über eine Verwendung von bestimmten » Es geht mir aber nicht nur speziell um ihn, sondern ich hoffe, dass weitere Mitleser sich mit der Sache beschäftigen und ihre gelernten Thesen darüber überdenken.
Genau das verwirrte mich. Ich habe mir erst darüber Gedanken gemacht, dass select * in den seltesten Fällen die richtige Wahl ist, als ich so eine Kritik wie von EKKI in Foren gelesen habe. Ich hatte davor oft eine Fehlermeldung wegen doppelter Feldnamen oder auch mir davor kaum Gedanken um die Menge übertragenen Daten gemacht.
Erst durch diese Hinweise habe ich mich überhaupt damit beschäftigt. Vorher hab ich auch überall select * geschrieben.
Ich bin ja auch kein DB Profi, aber ich empfand den Hinweis von EKKI hilfreich und nachvollziehbar, weil in fast jeder Tabelle Felder stecken, die nicht bei jeder Abbfrage nötig sind und gerade bei joins sind das dann mehrere, die oft auch noch die gleichen Namen tragen (wie z.b. das last_change oder is_deleted).
"In fast jeder Tabelle" ist auch so eine allgemeine und schwer zu be- und widerlegende Annahme. Irgendwelche Thesen und Annahmen allgemeiner Art entbinden meiner Meinung nach jedenfalls nicht von einer individuellen Betrachtung jedes Einzelfalls, wenn man optimale Ergebnisse auf effiziente Weise bekommen möchte.
Naja, ich behaupte mal, dass jede Tabelle, die nicht der Verknüpfung dient immer eine gewisse Redundanz enthält, die sich durch joins nochmal potenzieren kann. Das ist doch allein schon dadurch gegeben, dass jedes Feld für spezielle Funktionen gedacht ist. Es gibt Felder die dienen der Beschreibung des Datensatzinhalt, der Verknüpfung mit anderen Tabellen oder die lediglich zusätzliche (Debug)Informationen enthalten. Und es gibt wahrscheinlich noch mehr Möglichkeiten.
Insofern halte ich die Quantifizierung "seltenst" für eine nicht übertrieben grosse Einheit, sondern entspricht dem, was auch zumindest bei mir üblicherweise anfällt.
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.
Der Meinung war ich nicht. "Seltenst" ist für mich ein Extrem. Und er hat keine Argeumente für SELECT * gebracht, was dann für mich einseitig genug ist. Zugegeben, so viele kenne ich nicht. Das einzige Argument für SELECT *, das mir einfällt, ist, es genau dann anzuwenden, wenn man seine Funktionalität benötigt. Es werden aber viele Argumente dagegen genannt, die in ihrer Pauschalität nicht immer dem konkreten Fall angemessen sind. Dewegen plädiere ich für Einzelfallbetrachtungen und Hintergrundwissenerwerb statt Thesen und schneller Verallgemeinerungen.
Diese Haltung finde ich ein bisschen übertrieben. Da es so kaum möglich wäre nützliche Tipps zu geben ohne gleichzeitig jedesmal ausufernde Erklärungen abzuliefern, da man ja ansonsten verallgemeinern würde. Ein bisschen Eigenleistung erwarte ich von den Teilnehmern hier schon. Sodaß sie Aussagen auf ihren Einzelfall herunterbrechen können und gegebenenfalls darüber diskutieren. Dazu ist doch das Forum da.
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.
Struppi.