微软文档https://learn.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-2017说:
整数数据类型,可以采用 1、0 或 NULL 值。
SQL Server 数据库引擎优化了位列的存储。如果表中的位列数为 8 或更少,则这些列将存储为 1 个字节。如果存在 9 到 16 位列,则列将存储为 2 个字节,依此类推。字符串值 TRUE 和 FALSE 可以转换为位值:TRUE 转换为 1,FALSE 转换为 0。转换为位会将任何非零值提升为 1。
怎么可能在一个位中存储 1、0 和 NULL?
引用 @MarkByers 在问题How much size \xe2\x80\x9cNull\xe2\x80\x9d value Takes in SQL Server关于 SQL Server 如何存储的规范答案NULL关于SQL Server一般
\n\n\n除了存储空值所需的空间之外,拥有可空列也会产生开销。对于每一行,每个可空列使用一位来标记该列的值是否为空。无论列是固定长度还是可变长度,都是如此。
\n
因此,我希望该BIT类型的行为与任何其他列相同,这意味着将有一个单独的位来跟踪该列是否NULL为NULL。因此,BITSQL Server 中的列实际上使用两位来跟踪这三个值。
| 归档时间: |
|
| 查看次数: |
9424 次 |
| 最近记录: |