使用位掩码列还是几个位类型的列?

时间:2018-03-29 08:45:23

标签: c# sql-server database-design

我正在设计一个数据库(集成到Visual Studio Community 2017中的sql server)并遇到了这个问题。 我有桌子:

Movie
------------
PK MovId,
Title

TorrentMovie
------------
PK TorId,
FK MovId,
TorTitle

User
------------
PK UserId,
Username

UserSpecificTor1
------------
FK UserId,
FK TorId,
Visibility int

UserSpecificTor2
------------
FK UserId,
FK TorId,
NotInteresting bit,
Wrong bit,
Seen bit

可见性可能具有以下值:

0x00 Neutral,
0x01 Not interesting,
0x02 Wrong,
0x03 Not interesting & Wrong,
0x04 Seen,
0x05 Not interesting & Seen,
0x06 Wrong & Seen

我想知道哪种方法更好用:UserSpecificTor1表或UserSpecificTor2表?更好的是,我的意思是访问数据的速度,查询数据的复杂性和其他优势。

1 个答案:

答案 0 :(得分:1)

如果使用type bit列,SQL Server将自行优化存储。无需将这种复杂性添加到应用程序层。

  

SQL Server数据库引擎优化了位列的存储。如果表中有8位或更少位列,则列存储为1个字节。如果有9到16位列,则列存储为2个字节,依此类推。