【发布时间】:2012-10-12 06:34:37
【问题描述】:
我正在设计一张桌子。有几个相互无关的位列。
我正在考虑将这些列合并到一个通用的 ATTRIBUTES INT 位掩码列中。
现在,我试图说服自己这是一个坏主意。这似乎是一种反模式。如果我稍后需要另一个位列,这可能会节省我一些时间,但除此之外真的有什么好处吗?
如果我在位掩码上有一个索引,并且我通过 ATTRIBUTES & 128 = 128 进行搜索,那么我怀疑它效率不高。索引将使所有内容按整个值排序,而不是按位排序。所以,我想它实际上只需要扫描整个索引而不是确切地知道去哪里。
听起来对吗?这是一个可怕的想法吗?
谢谢, 泰德兹
【问题讨论】:
-
这是一个很好的缺点。在您看来,优点是什么?
-
就我个人而言,我会将它们分开。设置东西确实需要更多时间,但这样其他人将来学习你的数据库会容易得多。据我所知,这是唯一的主要区别。
-
下次我需要添加另一列时不必更新所有架构脚本、存储过程和业务对象是我能想到的唯一真正好处。
标签: sql-server database-design