No MySQL, é melhor sempre permitir nulos, a menos que você saiba que um campo é obrigatório, ou sempre usar, a Not Null
menos que saiba que um campo conterá nulos? Ou isso não importa?
Eu sei que em alguns DBMSs eles dizem usar Not Null
o máximo possível, porque permitir nulos requer um bit extra (ou byte?) Por registro para armazenar o status Nulo.
NULL
se e somente se oNULL
valor tiver uma interpretação para a coisa que você está modelando.Respostas:
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.
fonte
Você deve permitir que o design do esquema e os requisitos do aplicativo guiem essa decisão. As diferenças de desempenho provavelmente não são visíveis de qualquer maneira na maioria dos casos.
fonte