Pitter: Frage zu MySQL und PHP

Beitrag lesen

Tach!

Bitte gewöhn Dir schnellstens:
select * .....
ab!

Eine solche Dringlichkeit sehe ich nicht als geboten an. Wenn man alle Felder benötigt, warum soll man dann nicht * verwenden? Weil irgendwann später mal ein Feld in der Tabelle hinzukommen kann (aber nicht zwangsläufig muss) und man zu $irgendwas ist, sämtliche Referenzen im Code auf diese Tabelle anzupassen? Potentielles menschliches Versagen kann ja wohl kaum eine Begründung sein.

Doch!
Ich sage das aus einer Erfahrung bei meiner täglichen Arbeit als DB-Admin.
Programmierer sollen sich sowas gar nicht erst angewöhnen, denn ist einfach ein lachser Umgang mit Daten.

  • eine strukturelle Umstellung der Tabelle wird nicht oder spät erkannt und führt zu syntaktischen Problemen
  • man holt generell Daten, die ein anderer aus dieser Tabelle benötigt aber vielleicht gar nicht von einem selbst benötigt werden, was bei großen Systemen auch zu Performanceproblemen führt

Gerade wenn man mit vielen Leuten bzw. über lange Zeiträume so arbeitet, wird man irgendwann an dieser Stelle stolpern, weil jemand noch eine Spalte dazu benötigt u.ä. Dinge.

Diese Begründung finde ich nicht sehr verständlich formuliert. Designänderungen im wichtigen Unterbau eines Systems muss man gebührend berücksichtigen. Punkt. Alles andere ist nur Augenauswischerei. Wenn du befürchten musst, dass durch Änderungen das System unbemerkt gravierend beeinflusst werden kann, hast du ein ganz anderes Problem, was du nicht im Programmcode finden wirst.

In meiner Firma arbeiten 450 Leute, davon ca. 80 Entwickler...
Wie oben angedeutet, führen solche vermeidbaren selects über lange Zeiträume _immer_ zu Problemen. Wenn man es zudem nicht mit wenigen DBs zu tun hat, hinterfragt man den Sinn einer Spalte viel zu spät bzw. merkt u.U. gar nicht, dass die nicht genutzt wird. Es gehört einfach ebenso wie es dazu gehört, Variablen in Programmiersprachen zu deklarieren dazu, auch DB-Queries gezielt auszuführen.

Die Diskussion um SELECT * ist schon öfter geführt wurden, jedoch soweit ich weiß in diesem Raum lange nicht mehr. Die bisherigen Argumente dagegen waren für mich nicht überzeugend genug, dem SELECT * ein generelles Hausverbot auszusprechen. Kennst du Argumente, nach denen es pasuchal und nicht nur im Einzelfall wirklich sinnvoll ist, darauf zu verzichten? Allgemein betrachtet bringt ein * bei weniger benötigten Daten gegenüber einer Einzelaufzählung nicht zwangsläufig einen Nachteil. Wenn die Datenmenge der zusätzlichen Spalten zu gering ist, bemerkt den Unterschied niemand. Wenn man viele Spalten oder ein großes Blob-Feld der Tabelle hinzufügt, hat man noch ganz andere Probleme zu lösen.

Doch generell, zumindest langfristig und wenn man nicht nur für eine 3-Mann-Bude arbeitet! (siehe oben)