Was an SELECT * soll denn nun so grundlegend falsch sein? Mir erschliesst sich nicht wieso SELECT * solch Teufelswerk sein soll.
Anlass meiner Frage ist die Tatsache, dass in einem Thread wieder einmal mehr darauf hingewiesen wurde, wie schlimm SELECT * nicht sei, ohne überhaupt zu wissen, ob z.B. die Notwendigkeit, alle Felder zu lesen, besteht oder nicht. Ob und wie die Ergebnisse dann verifiziert werden war dem Beispiel auch nicht zu entnehmen.
Auffällig war jedenfalls der Hinweis, dass SELECT * sogar falsch sei und das lese ich nicht zum ersten mal!
Bsp.
Ich erlaube dem Admin in nahezu allen meinen Projekten selbst Felder in der Datenbank zu definieren. Meistens fehlen ja wirklich irgend welche Felder, die man dringend benötigen würde.
Da ich dem Anwender ersparen möchte für jedes selbst definierte Feld selbst Hand an den Code legen zu müssen, damit seine Felder auch ausgelesen werden ist ein SELECT * eine ebenso einfache wie unproblematisch funktionierende Abfrage.
Natürlich könnte ich nun jedes Mal den Aufbau einer Tabelle auslesen, den SELECT danach der Reihe nach abarbeiten und im Script mit den Feldnamen Schritt für Schritt zusammenbauen. Tatsächlich macht der Code dann aber auch nichts anderes als ein SELECT *, er wäre nur länger, fehleranfälliger und schlechter lesbar.
Aus reiner Ressourcen-Schonerei (sollte das der Grund sein) macht das Vermeiden eines SELECT * auch keinen wirklichen Sinn.
Im 21`sten Jhd und bei der Performance der aktuellen Server sind Laufzeitdifferenzen im Hunderstel Bereich nichts, was einen merkbaren Unterschied machen würde. Dann müsste ich genauso aus Ressource-Gründen Objekte verteufeln.
Den Grund für einen prinzipiellen Horror, beim Anblick von SELECT * sehe ich einfach nicht.
Anlass meiner Frage ist die Tatsache, dass in einem Thread wieder einmal mehr darauf hingewiesen wurde, wie schlimm SELECT * nicht sei, ohne überhaupt zu wissen, ob z.B. die Notwendigkeit, alle Felder zu lesen, besteht oder nicht. Ob und wie die Ergebnisse dann verifiziert werden war dem Beispiel auch nicht zu entnehmen.
Auffällig war jedenfalls der Hinweis, dass SELECT * sogar falsch sei und das lese ich nicht zum ersten mal!
Bsp.
Ich erlaube dem Admin in nahezu allen meinen Projekten selbst Felder in der Datenbank zu definieren. Meistens fehlen ja wirklich irgend welche Felder, die man dringend benötigen würde.
Da ich dem Anwender ersparen möchte für jedes selbst definierte Feld selbst Hand an den Code legen zu müssen, damit seine Felder auch ausgelesen werden ist ein SELECT * eine ebenso einfache wie unproblematisch funktionierende Abfrage.
Natürlich könnte ich nun jedes Mal den Aufbau einer Tabelle auslesen, den SELECT danach der Reihe nach abarbeiten und im Script mit den Feldnamen Schritt für Schritt zusammenbauen. Tatsächlich macht der Code dann aber auch nichts anderes als ein SELECT *, er wäre nur länger, fehleranfälliger und schlechter lesbar.
Aus reiner Ressourcen-Schonerei (sollte das der Grund sein) macht das Vermeiden eines SELECT * auch keinen wirklichen Sinn.
Im 21`sten Jhd und bei der Performance der aktuellen Server sind Laufzeitdifferenzen im Hunderstel Bereich nichts, was einen merkbaren Unterschied machen würde. Dann müsste ich genauso aus Ressource-Gründen Objekte verteufeln.
Den Grund für einen prinzipiellen Horror, beim Anblick von SELECT * sehe ich einfach nicht.
Kommentar