En règle générale, en programmation, il est presque toujours préférable d'être explicite.
Select * ne vous fait pas vraiment économiser beaucoup en termes de maintenance étant donné que le code qui consomme cette requête devra de toute façon être mis à jour dans la plupart des cas.
Si vous écrivez du code qui fonctionne aveuglément sur n'importe quel champ qui se trouve dans une table spécifique, vous posez des problèmes. Par exemple, le DBA qui ajoute une sorte de colonne de maintenance à une table comme un horodatage ne va pas penser qu'elle apparaîtra soudainement dans votre application. La meilleure façon de pérenniser votre application est d'être explicite.
N'oubliez pas non plus le coût de la bande passante dans une architecture client-serveur en faisant glisser vers le bas des colonnes de données que vous n'allez pas utiliser.
J'ai fait un traitement plus approfondi des implications de l'utilisation de select * sur les performances dans ce court article que j'ai écrit il y a quelque temps :"Ne pas utiliser Select *"