Nat*_*ate 20 sql-server datatypes
我在 SSMS 周围闲逛,注意到我的INT列的“大小”是 4 个字节(预期),但看到我的BIT列是一个完整字节时,我有点震惊。
INT
BIT
我误解了我在看什么吗?
SQL*_*tar 17
您在表中定义了多少位列?我在 MSDN 上找到了这个,它说 8 位或更少位的列存储为一个字节。
http://msdn.microsoft.com/en-us/library/ms177603.aspx
Mar*_*ith 14
是的。
如果bit表中只有一列,则存储使用 abyte但最多bit可以在同一字节中存储8列,因此接下来的 7 列在这方面是“免费的”。
bit
byte
还需要每列 1 位存储NULL_BITMAP(再次向上舍入到下一个字节)。在数据页面中,这包含bit所有列的a ,无论它们是否允许NULL(除了稍后添加的可为空的列作为元数据仅通过ALTER TABLE行尚未更新的位置更改)
NULL_BITMAP
NULL
ALTER TABLE
JNK*_*JNK 9
BIT每行使用一个字节,但您最多可以将 8 个BIT字段打包到该字节存储中。
所以第一个字段花费一个字节,但接下来的七个是免费的!
归档时间:
14 年,8 月 前
查看次数:
6411 次
最近记录: