Zitat Zitat von Fuerchau Beitrag anzeigen
Tja, da zeigt sich mal wie immer: Man muss wissen was man tut;-).
Einen Performanceunterschied zwischen Select * und Select f1, f2 ... konnte ich bisher nicht feststellen.
Der interne DB-Read liest sowieso den ganzen Satz und die SQL-Runtime macht dann nur noch ein paar Moves. Bei sinnvoller Verwendung von "DataPointern" (Zeiger auf Daten mit Feldspezifikation) werden die das wohl sinnvoll implementiert haben. Auch im RPG findet man dann nur Moves.
Und Millionen von Moves sind immer noch schneller als 1000de von Read's.

Anders siehts tatsächlich bei remoten DB's aus, da ich gezielt durch Angabe der Felder weniger Daten übertragen muss.

Und was den Join-Quatsch angeht.
Selbst da könnte ich einen "Select a.* from a inner join b on ..." durchaus machen, wobei da ein "where exists " durchaus sinnvoller ist.
... bei remote Verarbeitung werden niciht nur Daten, sondern auch die Statements übertragen!!!
Ich erinnere mich da an einen Kunden, der von "Experten" beraten wurde und denen man eine "Modernisierung" verkauft hat. Da wurden alle Quellen mit Tools nach total free RPG konvertiert, anschließend hat man sich nicht getraut das auch zu wandeln und in Produktion zu setzen und festgelegt das bis zur jeweils nächsten Änderung eines Programms zu verschieben. Dann hat man alle DDS erstellten Dateien nach SQL beschriebenen umgesetzt und dabei Autoincrement keys, und Timestamps für Anlage und Änderung zugefügt, sowie alle Feldnamen sprechend gemacht und gravierend verlängert. Da alle Programme mit RLA zugreifen, hat man anschließend die alten DDS LFs wieder draufgesetzt und alle Keybeziehungen, wie vorher wieder hergestellt.
Anschließend wollte man die Datenbank dann auf einen MS SQL-Server verschieben. Select * war dabei genauso verboten, wie die Erstellung "unnötiger" Views. Im proof of concept zeigte sich dann, das die Übertragung der überlangen SQL Statements mehr ausbremste, als eventuell unnötige Felder.

Gegen das Weglassen nicht benötigter Felder ist nichts einzuwenden (oft sind in Dateien mehr nie sinnvoll gefüllter Felder als tatsächlich benutzter), dann aber per View mit Select * und externen Datenstrukturen.

D*B