ale*_*emb 11 sql sql-server database-design bitmask
使用int vs varbinary在性能或灵活性方面存储位掩码是否有任何优势.
出于我的目的,我将始终对这些位掩码进行读取(无写入或更新).
Ron*_*erg 15
你绝对应该使用INT
(如果你需要32个标志)或BIGINT
(对于64个标志).如果你需要更多的标志,你可以使用BINARY
(但你可能也应该问自己为什么在你的应用程序中需要这么多的标志).
此外,如果使用整数类型,则可以直接使用标准位运算符,而无需将字节数组转换为整数类型.
如果确实需要更多标志并且必须使用,BINARY
则会失去对按位运算符的本机支持,因此可以轻松支持检查标志值.我可能会将标志值检查移动到客户端应用程序,但如果您喜欢使用T-SQL编程,那么这也是一个选项.如果您正在使用C#,那么您将拥有一个BitArray
具有必要操作的类,并且在Java中您拥有一个BitSet
类.
通常认为使用一堆位列而不是位掩码是优选的.它们将在页面中打包在一起,因此它们不会占用更多空间.虽然我似乎总是使用int或bigint列来避免所有列名称输入..但是使用intellisense我可能会使用位列.