我正在设计一张桌子。有几位彼此不相关。

我正在考虑将这些列合并到一个通用的ATTRIBUTES INT位掩码列中。

现在,我试图说服自己这是一个坏主意。好像是反模式。如果稍后在行中还需要另一列,可能会节省一些时间,但是除此以外真的还有其他好处吗?

如果我在位掩码上有一个索引,并且正在按ATTRIBUTES&128 = 128搜索,那么我怀疑它效率不高。索引将使所有内容按整个值而不是按位排序。因此,我想实际上它只需要扫描整个索引,而不是确切地知道要去哪里。

听起来对吗?这是一个可怕的主意吗?

谢谢,
特德兹

最佳答案

使用位掩码列使

  • 难以阅读和维护的代码
  • 索引无法使用

  • 它还违反了数据库设计的常规形式。

    您也不打算购买空间,因为SQL Server可以将多个位列压缩为单个字节。

    但是,由于位列自然不是非常有选择性,因此在这里使用索引也可能没有优势。

    总体而言,单个位列的好处明显超过了位掩码列的好处。因此,在几乎所有情况下,我都将使用单位列。

    关于sql-server - 使用位掩码存储不相关的位列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12849482/

    10-11 02:21