Hi!
select *
"SELECT *" ist selten eine gute Idee.
Bauchgefühl oder statistische Erhebung?
Zum einen belastet man die Datenbank damit, *alle* Spalten herauszusuchen und zu übertragen,
Solange man nicht überdurchschnittlich große Datenmengen pro Zeile speichert oder ein hochbelastetes System betreibt, ist das mit der heutigen Rechenpower kein Problem mehr, die paar überflüssige Bytes zu transportieren. Eigentlich eigenartig: bei SELECT * erregt es deutlich öfter (empirische Beobachtung) das Spargewissen als beispielsweise bei den vielen ungenutzt übertragenen HTTP-Header-Informationen.
obwohl man in den seltensten Fällen wirklich alle braucht,
Superlativst ausgedrückt. Wenn man bestimmte Information "seltenst" benötigt, warum belastet man dann das DBMS mit ihrer Speicherung. Und wäre ein SELECT * immer noch verteufelnswert, wenn man das auf eine genau für den gewünschten Anwendungsfall zugeschnittene View anwendet?
zum anderen hat man mit "SELECT *" spätestens dann Spaß, wenn man Gruppierungs- und Aggregatsfunktionen benutzen will ...
Syntax, die in bestimmten Fällen unpassend ist, rechtfertigt noch lange nicht eine generelle Ablehnung.
Es ist fast immer sinnvoller, nur die Spalten abzufragen, die man auch wirklich haben will.
Sinnvoll in wessen Sinne? Eine pauschale Sinnhaftigkeit für alle Anwendungsfälle kann es nicht geben.
Implizite JOINs sind ebensowenig eine gute Idee. Sie erschweren die Lesbarkeit und ...
... müllen die WHERE-Klausel mit Bedingungen voll, die dort eigentlich nichts zu suchen haben (weil sie eher zur Verknüpfung gehören).
Ich kann mich noch erinnern, dass ich mich auch etwas schwer getan hatte, die implizite Schreibweise zu verlassen. Ich denke aber nicht, dass es sehr beim Überzeugen hilft, wenn man statt mit den Vorteilen eines besseren Systems Werbung zu machen ein anderes herabwürdigt. Das weckt doch eher den Beschützerinstinkt. In einem Folgeposting zeigst du ja, wie die explizite Schreibweise ausieht. Das sollte eine bessere Argumentationsweise sein. Auch dass man sie für andere Join-Arten als den INNER JOIN benötigt (Oracle nicht betrachtet), und sie sowieso kennenlernen muss, wäre ein positives Argument, sich mit ihr zu beschääftigen.
Lo!