Espacio cero para falso
Cualquiera que sea su elección, puede configurarlo en NULLlugar de 0y no ocupará espacio adicional (ya que la base de datos casi siempre tiene una NULLbandera 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 truerequiere el espacio definido por el tipo de campo; el uso BITsolo ahorrará espacio si una tabla tiene varias columnas de este tipo, ya que usa un byte por cada 8 campos (frente a lo TINYINTque usa un byte por campo).
TINYINTtiene 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 TEXTcampos 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.