2011-12-29 13 views
7

Al considerar sólo dos valores posibles, 0 & 1 o verdadero & falso, es bastante obvio que BIT (1) hace un mejor trabajo:¿Por qué MySQL interpreta Boolean como TINYINT (1) en lugar de BIT (1)?

  • bit (1) Fuerzas sólo 2 valores posibles: 0 y 1 , mientras TINYINT (1) puede aceptar valores enteros menores que 10 (0,1,2,3,4,5 ....) que pueden ser ambiguos.
  • Varias columnas BIT (1) se pueden combinar en bytes, por lo que requieren menos espacio que las columnas TINYINT (1).

¿Por qué MySQL interpreta Boolean como TINYINT (1), pero no como BIT (1)? ¿Hay alguna ventaja de usar TINYINT (1) sobre BIT (1) en el manejo de valores booleanos?

Respuesta

5

Depende de la versión y el motor de base de datos y controlador

  • BIT se apoya adecuadamente en 5.05+ con MyISAM e InnoDB
  • Algunos controladores JDBC necesitan que se les diga esto (por ejemplo controlador incluido de la caldera)

Pero BIT es preferible a TININTINT por supuesto.
Es solo herencia e inercia lo que mantiene TINYINT ...

+0

+1 Por inercia. Sigo usando 'TININTINT (1)' en casi todas las circunstancias sin una buena razón. –

+0

+1 por inercia también. Todavía uso TINYINT (1) porque mi editor de SQL favorito no permite la edición de datos BIT tan simple como para TINYINT ... y puede ahorrar mucho tiempo en algunos casos. – Donatello

Cuestiones relacionadas