Mahlzeit dedlfix,
select *
"SELECT *" ist selten eine gute Idee.Bauchgefühl oder statistische Erhebung?
Erfahrung.
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.
Es ist bei verschiedensten Projekten, an denen ich mitgearbeitet habe, schon häufiger zu Performance-Problemen gekommen, weil an irgendeiner ganz unbedeutend erscheinenden Stelle irgendwer irgendwann mal ein unscheinbares "SELECT * FROM kundendaten WHERE [...]" hineingefrickelt hat (Weil's ja schnell gehen musste und so!) ... und irgendwann, wenn dann die Kundendaten Dimensionen annehmen, die bei der Konzeption nicht genügend bedacht wurden und dieses kleine Statement an verschiedenen Stellen aufgerufen ständig ausgeführt wird, geht auch das leistungsfähigste System in die Knie.
Natürlich wäre das mit einem skalierbaren Datenbankdesign und bedachter Programmierung alles kein Problem ... aber - mal Hand auf's Herz: wo klappt das schon *IMMER* zu 100%? Irgendwas ist immer: Zeitdruck, nachträgliche Änderungen (Die total wichtig sind!!!111einsELF), paralleles Arbeiten durch unterschiedliche, teils wechselnde Kollegen usw. - alles schon erlebt.
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.
Es gibt durchaus Daten, die man z.B. im Frontend kaum benötigt, im Backend aber schon. Mir fallen da spontan die IP-Adresse des Erstellers eines Datensatzes, der Zeitstempel des Erstellens usw. ein. Die muss ich nicht jedesmal für jeden einzelnen Datensatz vom Datenbankserver zum Webserver übertragen, wenn ich sie eh nicht benötige.
Und wäre ein SELECT * immer noch verteufelnswert, wenn man das auf eine genau für den gewünschten Anwendungsfall zugeschnittene View anwendet?
Nein. Deswegen habe ich auch nicht geschrieben "'SELECT *' ist generell und immer Scheiße!", sondern "'SELECT *' ist selten eine gute Idee."
Wie neulich jemand bemerkte: "SELECT *" kann das richtige Werkzeug sein - wenn man weiß, was man tut. Wenn man das nicht weiß, ist es unwahrscheinlich, dass man "SELECT *" benutzen möchte oder es gar benutzen *muss*.
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.
Habe ich das getan? Nein. Was also soll Dein agressiver Unterton (sofern man bei schriftlicher Kommunikation von "Tönen" sprechen kann)?
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.
Nochmal: was willst Du mit diesem Beitrag und diesen Formulierungen bewirken? Willst Du mich produzieren?
MfG,
EKKi
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|