【问题标题】:Why MySQL interprets Boolean as TINYINT(1) instead of BIT(1)?为什么 MySQL 将布尔值解释为 TINYINT(1) 而不是 BIT(1)?
【发布时间】:2012-01-30 01:48:19
【问题描述】:

当只考虑两个可能的值,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 将布尔值解释为 TINYINT(1),而不是 BIT(1)?在处理布尔值时使用 TINYINT(1) 优于 BIT(1) 有什么优势吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

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

    但 BIT 当然比 TINYINT 更可取。
    保留 TINYINT 的只是传统和惯性……

    【讨论】:

    • +1 用于惯性。在几乎所有情况下,我仍然无缘无故地使用TINYINT(1)
    • 惯性也是+1。我仍然使用 TINYINT(1),因为我最喜欢的 SQL 编辑器不允许像 TINYINT 那样简单地编辑 BIT 数据……而且在某些情况下它可以节省大量时间。
    猜你喜欢
    • 2013-05-23
    • 2015-07-11
    • 2016-02-01
    • 2011-11-25
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2022-08-05
    • 2021-12-29
    相关资源
    最近更新 更多