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

  • BIT(1)仅强制使用2个可能的值:0和1,而TINYINT(1)可以接受小于10(0,1,2,3,4,5 ....)的任何整数值,这些值可能是模棱两可的。
  • 多个BIT(1)列可以组合为字节,因此与多个TINYINT(1)列相比,它们需要的空间更少。

  • 那么,为什么MySQL将 bool 值解释为TINYINT(1)而不是BIT(1)?在处理 bool 值时,使用TINYINT(1)而不是BIT(1)有什么优势吗?

    最佳答案

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

    MyISAM和InnoDB在5.05+中正确支持

  • BIT
  • 需要告诉一些JDBC驱动程序(例如Kettle的捆绑驱动程序)

  • 但是,BIT当然比TINYINT更可取。
    仅仅是遗产和惯性,使TINYINT ...

    关于mysql - 为什么MySQL将 bool 值解释为TINYINT(1)而不是BIT(1)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8671312/

    10-13 08:46