Erklärt: warum kein SELECT * FROM ... verwenden

akretschmer

Datenbank-Guru
Beiträge
10.375
Diesen Hinweis (und man solle stattdessen die Spalten nennen) sieht man oft, aber warum?
  • auch wenn man vielleicht jetzt alle Spalten braucht in der Anwendung: kann man ausschließen, daß nicht später Spalten dazukommen?
  • vermeiden von später schwer zu lokalisierenden Fehlern: falls z.B. mehrere Tabellen via JOIN verbunden sind, und später in einer der Tabellen eine neue Spalte kommt, deren Name aber schon in einer anderen Tabelle vorkommt, wird die Applikation u.U. dann auf eine falsche Spalte zugreifen. Da hat man ganz plötzlich ganz komische Dinge in seiner Anwendung...
  • Optimierung durch die DB: manche Datenbanken wie z.B. PostgreSQL speichern große Werte (TEXT, Binärkram, ...) nicht in der eigentlichen Tabelle, sondern lagern dies aus (TOAST bei PG). Wird die Spalte nicht im Resultset benötigt, kann hier massiv optimiert werden. Andersrum: man fügt später eine 'fette' Spalte an: von nun ab wird bei jeder Abfrage mit 'select *' diese neue Spalte mit abgefragt - um verworfen zu werden.
Also: select * from ... vermeiden, die kleine Mühe, die benötigten Spalten zu nennen, lohnt sich!
(zumindest in produktivem Code)
 
Werbung:
Zurück
Oben