首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >丁丁对比特?

丁丁对比特?
EN

Stack Overflow用户
提问于 2009-01-28 18:43:01
回答 16查看 53.3K关注 0票数 86

我不想在这里引发一场宗教战争,但在如何在数据库中表示布尔值方面,似乎有两种观点。有些人认为bit是合适的数据类型,而另一些人则认为tinyint更好。

我所知道的唯一不同之处是:

  • bit:存储大小为1位,可能值为0或1
  • tinyint:存储大小为1字节,可能值为0-255。

当您需要表示布尔值时,哪种数据类型更好?tinyint是否值得额外的开销“以防万一”您需要值> 1?

EN

回答 16

Stack Overflow用户

发布于 2009-01-28 18:55:06

当您向表中添加位列时,它将占用每个记录中的整个字节,而不仅仅是一位。当您添加第二个位列时,它将存储在同一个字节中。第九位列将需要第二个字节的存储。具有1位列的表将不会获得任何存储好处。

Tinyint和bit都可以工作,我已经成功地使用了并且没有很强的偏好。

票数 94
EN

Stack Overflow用户

发布于 2009-01-28 18:45:46

Bit...unless你是“真/假/文件找不到”家族的人

万一你没拿到推荐信..。

在Linq2SQL的情况下,bit与true/false一起工作,这使得编程变得更加容易。两者都有好处。

也有程序维护需要考虑。如果您(或初级实习生程序员)使用2、3、25、41、167、200等,会发生什么情况?哪里有文档?位是自文档化的,而且相当通用。

票数 19
EN

Stack Overflow用户

发布于 2009-01-28 18:54:36

我在适当的时候使用比特。除了语义上正确的类型(语义计数!)之外,单个行(至少在Server上)中的多个位字段(最多8位)可以合并成一个存储字节。在第八个字节之后,接下来的8个还需要一个额外的字节,依此类推。

参考文献:

  • SQL 2000
  • SQL 2005
  • SQL 2008
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/488811

复制
相关文章

相似问题

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