En la mayoría de las bases de datos, una NOT NULL
columna será más eficiente en términos de datos almacenados por el motivo que establezca, y también más eficiente para consultar e indexar, por lo que, a menos que desee permitir NULL en una columna, debe rechazarlos explícitamente.
Habrá una ligera implicación en el rendimiento, ya que las NOT NULL
restricciones adicionales tendrán que verificarse potencialmente para cada fila que afecte con cualquier INSERTAR o ACTUALIZAR, pero como la mayoría de las bases de datos son relativamente leves para escribir y leer, esto probablemente no sea una preocupación (lo poco De todos modos, es poco probable que el tiempo adicional sea notable, ya que es una operación vinculada a la CPU donde el resto de la operación de inserción / actualización estará vinculada a las E / S y, por lo tanto, un cuello de botella mucho más significativo) y le brinda algo de "libre "comprobación de datos para que su código (o el código de otras personas) no pueda colocar NULL accidentalmente donde otro código no los espera y, por lo tanto, puede dar resultados incorrectos en su presencia.
Editar: Como Peter señala en su comentario, lo anterior es un generalismo y puede no ser cierto para todos los DMBS, aunque estoy bastante seguro de que lo es para mysql y mssql. Otras complicaciones en el área pueden incluir características como tablas dispersas (como MSSQL 2008 implementado, por ejemplo) que alterarán la dinámica de rendimiento de las columnas (no) anulables.
NULL
si y solo si elNULL
valor tiene una interpretación para lo que está modelando.