首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >布尔目的列字符(0)或tinyint(1)

问布尔目的列字符(0)或tinyint(1)
EN

Database Administration用户
提问于 2013-07-02 12:13:39
回答 2查看 3.7K关注 0票数 1

对于布尔用途列,哪一列更好:可空的char(0)或tinyint(1)。

我知道bool是tinyint(1)的别名,但在O‘’reilly出版的“高性能MySQL”一书中说:

“如果要将真/假值存储在单个存储空间中,另一个选项是创建一个可为空的CHAR(0)列。该列能够存储没有值(NULL)或零长度值(空字符串)的情况。”

哪一个的尺寸、性能、索引还是.

更新:我发现这个链接对这个问题很有用:Innodb表的有效布尔值存储

EN

回答 2

Database Administration用户

回答已采纳

发布于 2013-07-02 14:25:10

您应该记住,即使作为复合索引的一部分,也不可能对CHAR(0)列进行索引。

就大小而言,没有比NULLable CHAR(0)更好的了;但是您有多少这样的?与表中的其他数据类型相比?通常情况下,与总体数据类型和大小相比,这是不可忽视的。

最清晰的是未签名的BOOL/TINYINT。最明显的是,人们期望什么价值。

否则,请在我的帖子中考虑许多备选方案,并在评论中看到好的想法:选择MySQL布尔数据类型

票数 5
EN

Database Administration用户

发布于 2013-07-02 13:12:33

我认为您应该使用TINYINT( 1 ),因为对于整数值,可以将值降到0和1。使用TINYINT,我们只支付1字节的存储。与CHAR( 1 )一样,我们不能阻止任何人使用除0和1以外的其他值,但这并不重要,如果我们愿意接受0计算为False,而所有其他值都为True的话。使用TINYINT(1),布尔表达式可以很好地处理列值。

大小、性能和索引:

我觉得检索和排序整数字段比字符字段更快,而且对于on/off标志显示1s和0也很常见。

票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/45580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档