Minha dúvida é a seguinte, uma coluna no banco de dados SEM VALOR ocupa espaço?
Ocupa o mesmo espaço se tivesse valor?
Ocupa um espaço menor do que se tivesse valor?
Ocupa o mesmo espaço se não existisse a coluna
Já ouvi de um arquiteto que:
No oracle os espaços são prealocados, logo a resposta pro oracle é SIM
No SQL server não ocupa espaço, logo a resposta pro oracle é NÃO
Mas queria uma informação mais precisa sobre isso, experiências sobre isso, se alguem tem algo a dizer.
Eu sou preguiçoso e uso normalmente o recurso do EA (Enterprise Architect) que faz o cálculo do espaço para mim.
Eu não me preocupo tanto com isso; eu prefiro saber:
Qual é a quantidade prevista de dados, em registros;
Qual é a taxa de crescimento desses dados;
para poder fazer uma previsão usando algum recurso desses programas, que têm as fórmulas corretas para cada versão do banco.
Se para cada campo são reservados no mínimo 4 bytes, ou então se não se usa espaço nenhum (e se o indicador de comprimento para um campo VARCHAR é usado apenas se o campo não é NULL), é coisa que depende de cada banco.
Cada banco tem uma política diferente, é caso de você consultar a documentação do tal banco.
Hoje em dia, normalmente é melhor usar VARCHAR que usar CHAR, já que o tempo de acesso a disco é infinitamente superior ao tempo para fazer contas, e então é melhor trabalhar com os dados ocupando a menor quantidade de espaço em disco possível. Em muitos bancos (acho que no Oracle e no SQL Server é assim) CHAR e VARCHAR são implementados exatamente da mesma forma.