为啥 MySQL 将布尔值解释为 TINYINT(1) 而不是 BIT(1)?
Posted
技术标签:
【中文标题】为啥 MySQL 将布尔值解释为 TINYINT(1) 而不是 BIT(1)?【英文标题】: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) 有什么优势吗?
【问题讨论】:
【参考方案1】:这取决于版本和数据库引擎和驱动程序
在 5.05+ 中使用 MyISAM 和 InnoDB 正确支持 BIT 需要告知一些 JDBC 驱动程序(例如 Kettle 的捆绑驱动程序)但 BIT 当然比 TINYINT 更可取。 保留 TINYINT 的只是传统和惯性……
【讨论】:
+1 用于惯性。在几乎所有情况下,我仍然无缘无故地使用TINYINT(1)
。
惯性也是+1。我仍然使用 TINYINT(1),因为我最喜欢的 SQL 编辑器不允许像 TINYINT 那样简单地编辑 BIT 数据……而且在某些情况下它可以节省大量时间。以上是关于为啥 MySQL 将布尔值解释为 TINYINT(1) 而不是 BIT(1)?的主要内容,如果未能解决你的问题,请参考以下文章