Warum … SELECT * … böse ist

oder ein Appell an die Genauigkeit …

Jeder SQL- Programmierer hat es sicher schon hundertfach verwendet, viele sind nach einiger Zeit ihrer Programmiertätigkeit zur Einsicht gekommen, dass der berühmte Stern ‚*‘ sicher keine Lösung ist, andere verwenden ihn sicher noch immer regelmäßig auch in echten Projekten. Ich versuche hier einmal zusammenzufassen, wo die größeren Probleme und Gefahren bei der Verwendung von ‚SELECT * …‘ liegen und dass es eigentlich keine Alternative zum genaueren Arbeiten und somit zum Angeben von gewünschten Spaltennamen gibt.

  1. Ein SELECT * liefert meist eine größere Datenmenge als man eigentlich am Client benötigt. Soweit so gut könnten jetzt noch einige einwerfen, bei Datenbanken mit ein paar Spalten und ein paar hundert Zeilen sollte das egal sein. – Bitte vergeßt nicht, jede Datenbank kann wachsen und zwar sowohl was die Anzahl der Datensätze angeht, als auch was die Anzahl der Spalten angeht … stellt euch vor ihr ändert mit ALTER TABLE eure Tabelle dahingehend ab, dass ihr eine TEXT und noch eine BLOB Spalte hinzufügt … braucht man immer alle Blobs und alle Texte? Und wer ändert schon im Nachhinein beim Ändern der Tabellenstruktur auch alle Abfragen?
  2. Bei manchen Datenbank-Management – Systemen kann es bei der Verknüpfung von Tabellen, die gleiche Spaltennamen beinhalten zu undefinierten Ergebnissen kommen.
  3. Die Reihenfolge der Spalten im Ergebnis ist nicht änderbar. Ein SELECT * liefert immer genau die Spalten in der Reihenfolge in der sie angelegt wurden.

Wie würde also nun ein richtiges SQL Statement aussehen?

SELECT spalte1, spalte2 spalte3 FROM tabelle ...

Sicherlich gibt es noch weitere Gründe warum man sich möglichst rasch angewöhnen sollte auf SELECT * zu verzichten, aber ich glaub das hier waren einmal die wichtigsten … Wenn nicht, … dieser Blog hat auch eine Kommentarfunktion und ich freue mich auf Einwände aller Art!

 

About

You may also like...

Your email will not be published. Name and Email fields are required