Se funziona specificando le colonne e NON usando "*"
NON E' perche' non supporta "*" (non avrebbe senso, sarebbe un errore risolto un millisecondo dopo che e' stato rilevato)
MA
perche' l'ordine delle colonne NON E' quello che uno si aspetta,
OPPURE il numero delle colonne NON E' quello che uno si aspetta.
Diciamo che e' SBAGLIATO usare "SELECT *", ANCHE SE sembra funzionare nel 99% dei casi.
C'e' sempre quell'1% che genera la rogna rognosa.
Cosi' come non ci si puo' fidare dell'ordine SENZA una ORDER BY ANCHE SE sembra funzionare nel 99% dei casi.
Esplicitare i campi è più una questione di efficientamento
No, non centra nulla con l'efficientamento, ma ha a che fare con il fatto che una tabella potrebbe venir modificata per un motivo qualunque. indicare esplicitamente le colonne fa si che non si dipenda dall'ordine deciso dal DBMS il quale,per un motivo qualunque, potrebbe decidere di tenere vicine delle colonne.
Classico esempio: colonne C1,C2,C3,C4 e indice multicolonna su C1 e C3: il DBMS potrebbe decidere di riordinare le colonne come C1,C3,C2,C4