对于MySQL中的标志,BIT(1)或TINYINT

时间:2014-08-21 14:22:23

标签: mysql sql

我经常有表格,我需要存储一个标志,可以是1或0(真或假等)。

我之前使用过TINYINT。

我应该改用BIT(1)吗?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:11)

如果您使用的mysql版本大于5.0.3 Bit不再是Tinyint的别名,但如果您创建了bit列,它仍会获得1 Byte

所以使用Bit(1)Tinyint(1)是相同的,如果您的表只有1 Bit列,则您无法获益。

但如果您有更多的真/假列,我建议您使用Bit,因为位列的每个值都放在同一个1 Byte中,直到它被填充。

如果你使用低于5.0.3的mysql然后使用tinyintbit完全没问题。如果你查看bool类型的mysql文档,你会发现它是tinyint的别名

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

  

BOOL,BOOLEAN

     

这些类型是TINYINT(1)的同义词。值为零   假。非零值被认为是真的:


  

BIT是TINYINT(1)的同义词。