TINYINT vs ENUM(0, 1) for boolean values in MySQL
You can use BIT(1)
as mentioned in mysql 5.1 reference. i will not recommend enum
or tinyint(1)
as bit(1)
needs only 1 bit for storing boolean value while tinyint(1)
needs 8 bits.
My research shows that BIT(1) is a synonym for TINYINT(1) for versions of MySQL before 5.0.3.
MySQL versions after 5.0.3 change how the BIT datatype works. It is no longer a synonym for TINYINT and is the only data type that allows you to store anything in less than one byte.
This datatype may be preferrable to using TINYINT or ENUM. I plan on testing to see which is fastest and the space usage of the three on my blog. There is a link at the bottom if you care to see the size and speed results. Testbed: crummy consumer grade Pentium III box running OpenBSD and MySQL. (With a slower DB dev box, you can really feel the effects of bad code. Also, differences between test queries are more discernible. Alternatively, try using a VM with barely enough resources allocated.)
The MySQL Official Documentation.
- v5.1 - http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html
- v5.6 - http://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html
Baron Schwartz has this to say about it.
http://www.xaprb.com/blog/2006/04/11/bit-values-in-mysql/