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.