SQL Server位列是否真的使用整个字节的空间?


20

我在四处浏览SSMS时,发现我的INT列的“大小” 是4字节(预期),但是看到我的BIT列是整个字节时,我感到有些震惊。

我误会了我在看什么吗?


1
我很幸运BIT列在字节边界而不是字边界上对齐。
Mike Sherrill'Cat Recall'12

Answers:



14

是。

如果bit表中只有一列,则存储使用,byte但是bit同一字节中最多可以存储8 列,因此在此方面,接下来的7列是“空闲的”。

每列存储也需要1位NULL_BITMAP(再次四舍五入到下一个字节)。在数据页中,该字段包含bit所有列的,无论它们是否允许NULL除非稍后将可空列作为元数据添加ALTER TABLE,否则仅通过尚未更新的行进行更改)


9

BIT每行使用一个字节,但是您最多可以将8个BIT字段打包到一个字节存储中。

因此,第一个字段花费一个字节,但是接下来的七个字段是免费的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.