为什么MySQL将布尔解释为TINYINT(1)而不是BIT(1)?

时间:2011-12-29 17:46:50

标签: mysql

当仅考虑两个可能的值时,0& 1或True&错,很明显BIT(1)做得更好:

  • BIT(1)仅强制2个可能的值:0和1,而TINYINT(1)可以接受任何小于10(0,1,2,3,4,5 ....)的整数值,这可能是不明确的。
  • 多个BIT(1)列可以组合成字节,因此它们比多个TINYINT(1)列所需的空间更少。

那么为什么MySQL将Boolean解释为TINYINT(1),而不是BIT(1)?在处理布尔值时使用TINYINT(1)而不是BIT(1)是否有任何优势?

1 个答案:

答案 0 :(得分:5)

这取决于版本和数据库引擎和驱动程序

  • 使用MyISAM和InnoDB
  • 在5.05+中正确支持BIT
  • 需要告诉一些JDBC驱动程序(例如Kettle的捆绑驱动程序)

但是BIT当然比TINYINT更好 保持TINYINT只是遗产和惯性......