¿Por qué utilizar NOT NULL en lugar de NULL para los campos siempre que sea posible?
Utilice NOT NULL para los campos tanto como sea posible
, a menos que existan circunstancias especiales. Esta oración se cita mucho en los artículos de optimización de MySQL, pero no se explica el motivo. Hablemos del contenido relevante. ¿Por qué mucha gente usa NULL? 1. NULL es el valor predeterminado al crear una tabla de datos. Los programadores junior o desinformados o preocupados por los problemas no prestarán atención a esto. 2. Mucha gente piensa que no es nulo y requiere más espacio. De hecho, ese no es el punto. 3. El punto es que muchos programadores sienten que no es necesario juzgar NULL para insertar datos durante el desarrollo, y es más conveniente y rápido al escribir declaraciones SQL.
Se ha escrito mucha información en Internet: Documento del sitio web oficial de Mysql: "Las columnas NULL requieren espacio adicional en la fila
para registrar si sus valores son NULL. Para las tablas MyISAM, cada columna NULL
Toma un bit extra, redondeado al byte más cercano.”
-------------------- - -----------------------Mysql es difícil de optimizar las consultas que hacen referencia a columnas que aceptan valores NULL, lo que hace que los índices, las estadísticas de índice y los valores sean más complejos. Las columnas que aceptan valores NULL requieren más espacio de almacenamiento y requieren un procesamiento especial dentro de MySQL. Después de indexar una columna que acepta valores NULL, cada registro requiere un byte adicional, lo que también hace que el índice de tamaño fijo en MYisam
se convierta en un índice de tamaño variable--------esto también es la interpretación introducida en "Segunda edición de MySQL de alto rendimiento": "Las columnas que aceptan valores NULL requieren más espacio de almacenamiento": se necesita un byte adicional como indicador para determinar si es NULL "requiere un procesamiento especial dentro de MySQL":
Nota: Sin embargo, las implicaciones de rendimiento de cambiar la columna NULL a NOT NULL son muy pequeñas.
A menos que sea seguro que causará problemas,
no lo tome como una prioridad. Las medidas de optimización más importantes son la idoneidad del tipo de columnas utilizadas.