Na maioria dos bancos de dados, uma NOT NULL
coluna será mais eficiente em termos de dados armazenados pelo motivo que você declara, e também mais eficiente para consultar e indexar - portanto, a menos que você deseje permitir NULLs em uma coluna, desabilite-os explicitamente.
Haverá uma pequena implicação no desempenho, já que as NOT NULL
restrições extras precisarão ser verificadas para cada linha que você afetar com qualquer INSERT ou UPDATE, mas como a maioria dos bancos de dados é relativamente leve para gravação e pesada para leitura, isso provavelmente não é uma preocupação (a pequena é improvável que ocorra um tempo extra de qualquer maneira, pois é uma operação vinculada à CPU, onde o restante da operação de inserção / atualização será vinculado à IO e, portanto, um gargalo muito mais significativo) e oferece alguns "recursos gratuitos" "verificação de dados para que seu código (ou o código de outras pessoas) não possa acidentalmente colocar NULLs onde outro código não os espera e, portanto, pode dar resultados incorretos na presença deles.
Edit: Como Peter aponta em seu comentário, o acima é um generalismo e pode não ser verdadeiro para todos os DMBSs, embora eu tenha certeza que isso ocorre para o mysql e o mssql. Outras complicações na área podem incluir recursos como tabelas esparsas (como o MSSQL 2008 implementado, por exemplo) que alterarão a dinâmica de desempenho de colunas (não) anuláveis.
NULL
se e somente se oNULL
valor tiver uma interpretação para a coisa que você está modelando.