可空位字段在SQL记录和SQL索引中占用多少空间?

时间:2013-03-01 16:59:01

标签: sql database sql-server-2008-r2 size bit

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

我认为只有当它们被声明为not null时才会成立。

可空位字段怎么样?它们是2位还是整个tinyint?

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

1 个答案:

答案 0 :(得分:2)

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

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