Tinyint vs ENUM(0, 1) 用于 MySQL 中的布尔值

2022-08-30 14:57:44

哪一个更好,Tinyint具有0和1值或Enum 0,1在MyISAM表和MySQL 5.1中?


答案 1

您可以使用 mysql 5.1 参考中提到的方法。我不会推荐或只需要1位来存储布尔值,而需要8位。BIT(1)enumtinyint(1)bit(1)tinyint(1)


答案 2

我的研究表明,BIT(1) 是 TINYINT(1) 的同义词,适用于 5.0.3 之前的 MySQL 版本。

5.0.3之后的MySQL版本更改了BIT数据类型的工作方式。它不再是TINYINT的同义词,并且是唯一允许您在小于一个字节中存储任何内容的数据类型。

此数据类型可能比使用 TINYINT 或 ENUM 更可取。我计划进行测试,看看哪个是最快的,以及我博客上这三个的空间使用情况。如果您想要查看大小和速度结果,底部有一个链接。测试平台:运行OpenBSD和MySQL的蹩脚消费级Pentium III盒子。(使用较慢的数据库开发框,您可以真正感受到不良代码的影响。此外,测试查询之间的差异更容易辨别。或者,尝试使用几乎未分配足够资源的 VM。

MySQL官方文档。

施瓦茨男爵对此有这样的说法。

http://www.xaprb.com/blog/2006/04/11/bit-values-in-mysql/


推荐