Welche Risiken sollen denn dahinter stecken, dass ich nicht alle Felder selektiere?
Müssen es unbedingt Risiken sein?
Der Begriff kam von Ilja
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?
Ja, weil ich in den meisten Fällen ein Objekt benutze, dass explizit alle Felder definert. D.h. ich krieg bei diesen Abfragen wenn sie zuviel Felder enthalten, direkt eine Fehlermeldung.
Und was die Performance angeht bin ich über jden Tipp dankbar. Mir ist mein Paket schon gesperrt wurde, da die Seite extrem schwankende Zugriffszahlen hat und erst nach intensiver Nachbearbeitung der SQL Abfragen läuft sie stabil (das war dann die Möglichkeit für mich soviel wie möglich von Explain zu lernen, ausserdem wurden die komplexen Abfragen gecached).
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?
Das läßt sich in einer komplexen Anwendung kaum bestimmen. Ich entnehme aber deinen Ausführungen, dass du es für kaum nennenswert hälst?
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.
Ich geb doch niemanden die Schuld an irgendwas. Sondern sage nur, dass mir dieser Tipp geholfen hätte, wenn ich ihn früher aufgeschnappt hätte und ich mich wundere, dass und warum er so kontrovers hier diskutiert wird, ohne das ich erkennen kann, was ich nun davon habe, wenn ich alle Felder selektiere, anstatt select * zu vermieden wo immer es geht.
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, ..
Dann bist du sicher ein Leuchturm, was das aneignen von Wissen angeht. Ich kann das so nicht.
Ich glaube auch nicht das das viele können. Wenn man sich auf etwas spezialisiert, ist es sicher einfacher, sich umfassend und allwissend über alle Aspekten eines Bereiches zu informieren.
Da es aber nötig ist, wenn man im Webbereich arbeitet, von allen etwas zu Wissen, grenzt das an eine Unmöglichkeit. Du brauchst, um eine Seite zu betreiben, das Wissen von mehreren Programmiersprachen, Auszeichnungssprache, Serverkonfiguration, Datenbanken, daneben die vielen kleineren Sachen, wie das Auswerten von Logfiles, Bildbearbeitung und dazu kommen ständig neue Änderungen und Erweiterungen, die sich die Nutzer wünschen.
Insofern sehe ich das Lernen, wie du es dir vorstellst als utopisch an. Und ich glaube dass es vielen, die hier Fragen und manchen die hier antworten nicht anders geht. Es ist wesentlicher einfacher mit klaren Regeln zu arbeiten, als sich über jede Regel Gedanken machen zu müssen.
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?
In einem Kurs an der Uni magst du Recht haben, aber in der Praxis sieht das anders aus, wie man hier jeden Tag hundertfach sieht. Von denen die hier Fragen, ist vielleicht einer im halben Jahr wirklich bereit und willig intensiv etwas zu lernen, die meisten suchen eine Lösung im Rahmen ihres Wissens.
Struppi.