Ara*_*avi 1 mysql performance database-design optimization datatypes
对于布尔用途列,哪个更好:可为空char(0)或tinyint(1).
我知道 bool 是 tinyint(1) 的别名,但在 O'reilly 出版的“高性能 MySQL”一书中说:
“如果您想在单个存储空间中存储真/假值,另一种选择是创建一个可为空的 CHAR(0) 列。该列能够存储值 (NULL) 或零的缺失-length 值(空字符串)。"
哪个更适合大小、性能、索引或...
更新:我发现此链接对这个问题很有用: Innodb Tables 的高效布尔值存储
您应该记住,即使作为复合索引的一部分,也不可能对 CHAR(0) 列进行索引。
就大小而言,没有什么比 NULLable CHAR(0) 更好;但是你有多少呢?与表中的其他数据类型相比?通常,与整体数据类型和大小相比,这是可以忽略的。
最清楚的是 BOOL/TINYINT UNSIGNED。最明显的是期望什么值。
否则请在我的帖子中考虑许多替代方案,并请参阅评论中的好主意:选择 MySQL 布尔数据类型