0

正如在Tinyint vs Bit中所讨论的,如果我在一个表中有 8 个位字段,它们将只占用一个 tinyint 的记录大小。

我认为只有当它们被声明为not null.

可空位字段呢?他们是 2 位还是整个 tinyint ?

索引呢?INCLUDED如果我在列表中使用该字段与其他位或非位字段相结合,可空或不可空位字段在索引内占用多少空间?如果位在索引表达式中与其他位和非位字段一起使用怎么办?

4

1 回答 1

2

我不能谈论 SQL Server 的细节,(而且我在不知道细节的情况下说话而受到抨击)。但是,数据库每个可空字段只需要一位。如果数据库专用更多空间,那是因为希望获得性能优势,例如 32 位对齐整数。

典型 RDBMS 中的索引是 b 树。位域的树只是一个用于设置位的分支和一个用于清除位的分支。如果可以为空,则另一个分支。树的末尾将是匹配该条件的记录列表。

于 2013-03-01T17:12:05.250 回答