首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bits Char -存储3个互斥标志的最佳方式是什么?

Bits Char -存储3个互斥标志的最佳方式是什么?
EN

Stack Overflow用户
提问于 2011-09-27 03:12:41
回答 5查看 518关注 0票数 4

我有一张桌子,是用来记录各种物品的。在其他属性中,项可以是A、B或C,每个属性都与其他属性互斥。将此信息存储为字符、3组位(isA isB、isC等)或其他方法是最佳实践吗?如果我将来可能需要更多的数据类型,我可以理解使用字符,但是对我来说,使用bit数据类型将消耗更少的存储空间也是有意义的。或者我过度分析了这一点,差异会如此之小以至于无关紧要吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-27 03:19:40

,还是我过度分析了这一点,差异会如此之小以至于无关紧要吗?

有一点,是的。

但是您必须了解,您的设计方案之间有一个重要的区别:拥有一个char列将使排他性异常工作。拥有IsX字段(单独)将不会。解释:通过使用IsAIsB列,您可能会在同一条记录中将这两个列都设置为true,除非您使用其他机制来阻止这种情况(触发器、检查约束等)。

此外,每次可能有新值时都有一个新列,这不是一个好的DB设计。

票数 4
EN

Stack Overflow用户

发布于 2011-09-27 03:19:37

只需使用Char即可。

在空间方面,您将在每百万行中使用额外的625kb (假设每行节省5位,这是最好的节省方案)。

不是很多的

客观地说,这是每十亿行的625 MB。当您遇到这种大小的表时,您不会关心任何不以gigaterapeta开头的单元。

在内部,SQL Server将它们全部存储为一个字节(最多8位字段)。

当空间变得重要的时候,任何架构的改变(从使用位字段到更灵活的东西)都将是极其痛苦的。

票数 2
EN

Stack Overflow用户

发布于 2011-09-27 03:18:29

我会使用单个字符、字节、枚举等等。如果状态是互斥的,那么这不是标志的最佳用法。

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

https://stackoverflow.com/questions/7560057

复制
相关文章

相似问题

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