Hi!
Welche Risiken sollen denn dahinter stecken, dass ich nicht alle Felder selektiere?
Müssen es unbedingt Risiken sein? Das Risiko besteht darin, dass man sich zu wenig Gedanken macht. In erster Linie hat eine Vorgehensweise Eigenschaften. Ob diese positiv oder negativ sind ist anwendungsfallabhängig, unabhängig davon ob die Statistik den einen oder anderen Anwendungsfall bevorzugt.
Der einzige Risikofaktor ist doch der, das nicht alle Felder in der Abfrage vorkommen, aber das ist völlig logisch.
Ja, das merkst du in der Regel auch ziemlich schnell, weil in der Ausgabe was fehlt. Merkst du genauso schnell, wenn du beim Verringern der Ausgabemenge die Query nicht angepasst hast, dass du dann zu viele Spalten abfragst, was ja ganz, ganz schreckliche Auswirkungen auf die Performance hat?
Ich für meinen Teil, hätte diese Information gerne viel früher gelesen, denn in meinen alten Anwendungen wimmelt es nur so von select *, ich wurde nie darauf hingewiesen. z.b. hier.
Welche Auswirkungen hat es denn in deinen Fällen konkret gehabt? Wieviel Daten hast du eingespart und wieviel Pflegeaufwand hast du generiert? Diese Aussage kommt mir so vor, als ob die anderen schuld waren, dass sie dir das nicht gesagt haben. Die SELECT-*-Predigten sind nur unwesentlich jünger als SQL selbst. Leider ist auch die Vorgehensweise recht verbreitet, Anfängern oft zu einfach in ein Thema einzuführen und weitergehendes Wissen als Tipps und Tricks zu verkaufen.
Wie hat sich eigentlich deine Arbeitsweise seit der SELECT-*-Aufklärung geändert? Vermeidest du einfach nur seine Anwendung oder denkst du fallabhängig darüber nach, welche Vor- und Nachteile dir der Verzicht darauf bringt?
Wie gesagt, ich sehe diese Diskussion als Laie und mir bringt die Information das alle Felder zu selektieren schlecht ist wesentlich mehr, als eine Diskussion darüber, wann es nicht der Fall ist.
Womit wir wieder am Anfang wären: Es ist nicht prinzipiell schlecht, alle Felder zu selektieren - nicht in jedem Fall. Als Erfahrener sehe ich, dass es besser ist, Wissen in neutraler Form zu lernen statt (vereinfachte) Regeln zu lernen, auch wenn überwiegend der See einen Meter tief ist. Letzteres ist eine nette Zusatzinformation, die aber nicht den Blick für die Ausnahmen trüben darf.
Die Aussage gegenüber dem Laien sollte nicht sein: "XY ist (meistens) Mist" sondern er muss herangeführt werden zur eigenständigen Klärung der Frage: Ist XY in einem speziellen Fall a) angemessen, b) ungeeignet oder c) die Auswirkungen nicht relevant?
Lo!