我正在设计一张桌子。有几个位列彼此不相关。
我正在考虑将这些列合并到一个通用的属性 INT 位掩码列中。
现在,我试图说服自己这是一个坏主意。这似乎是一种反模式。如果我稍后需要另一个位列,这可能会为我节省一些时间,但除此之外真的有什么好处吗?
如果我在位掩码上有一个索引,并且我按属性和 128 = 128 进行搜索,那么我怀疑它效率不高。索引将按整个值而不是按位排序所有内容。所以,我想它实际上必须只扫描整个索引,而不是确切地知道去哪里。
听起来对吗?这是一个可怕的想法吗?
谢谢泰德兹
使用位掩码列使
- 代码更难阅读和维护
- 索引使用不可能
它还违反了数据库设计的正常形式。
您也没有购买空间,因为SQL Server可以将多个位列压缩为单个字节。
但是,由于位列自然不是很有选择性,因此在这里使用索引也可能不利。
总体而言,单位列的优点显然超过了位掩码列的优点。所以我几乎在所有情况下都会使用单位列。