Por hábito, nunca uso SELECT *
em código de produção (só uso com consultas de sucata ad-hoc, normalmente ao aprender o esquema de um objeto). Mas me deparei com um caso agora em que estou tentado a usá-lo, mas me sentiria barato se o fizesse.
Meu caso de uso está dentro de um procedimento armazenado onde é criada uma tabela temporária local que deve sempre corresponder à tabela subjacente usada para criá-la, sempre que o procedimento armazenado for executado. A tabela temporária é preenchida muito mais tarde, portanto, um truque rápido para criar a tabela temporária sem ser detalhado seria SELECT * INTO #TempTable FROM RealTable WHERE 1 = 0
especialmente para uma tabela com centenas de colunas.
Se o consumidor do meu procedimento armazenado for agnóstico para conjuntos de resultados dinâmicos, há algum problema comigo vendendo meus serviços para SELECT *
?