Espacio cero para falso
Cualquiera que sea su elección, puede configurarlo en NULL
lugar de 0
y no ocupará espacio adicional (ya que la base de datos casi siempre tiene una NULL
bandera para cada campo de cada fila, simplemente allí; más información aquí ). Si también se asegura de que el valor predeterminado / más probable sea false
, ¡ahorrará aún más espacio!
Algo de espacio para la verdad
El valor a representar true
requiere el espacio definido por el tipo de campo; el uso BIT
solo ahorrará espacio si una tabla tiene varias columnas de este tipo, ya que usa un byte por cada 8 campos (frente a lo TINYINT
que usa un byte por campo).
TINYINT
tiene la ventaja de permitirle personalizar una máscara de bits de 8 valores sin preocuparse por administrar un montón de columnas adicionales, y la búsqueda es teóricamente más rápida (un campo de un solo número entero frente a varios campos de bits). Pero hay algunas desventajas, como un orden más lento, elementos elegantes de indexación cruzada y la falta de nombres de campo. Lo cual para mí es la mayor pérdida; su base de datos requeriría documentación externa para anotar qué bits hicieron qué en qué máscaras de bits.
En cualquier caso, evite la tentación de utilizar TEXT
campos para almacenar valores booleanos o conjuntos de ellos. La búsqueda en el texto es mucho más trabajo para el servidor y los esquemas de nombres arbitrarios como "encendido, apagado, apagado" pueden dañar la interoperabilidad.