Microsoft SQL Server DBMS中可空数据类型的大小是多少?
例如,非可空int应该占用4个字节,可空列的专用空间是多少?
子问题:nullable int,char(N),nvarchar(N) - 我假设它们可能以不同方式存储。
我读过的内容:
- 在哪里可以找到SQL Server数据类型的大小 - 获取我的SQL Server版本的sql类型列表及其大小的好方法。但是没有说可空类型。
- http://msdn.microsoft.com/en-us/library/ms189124.aspx - 有用于计算所需的可变大小的列空间中的公式:“Variable_Data_Size = 2 +(Num_Variable_Cols×2)+ Max_Var_Size”。这是很奇怪:为什么它含有* 2倍乘数(没有告诉nvarchar的 - 这个公式是所有可变大小类型,来自说明);它必须是一个错字,Max_Var_Size被添加而不是相乘;最后它包含+2个字节用于存储值的长度,但同样不包含任何用于存储NULL值的内容。据我所知,这是可能使用的值长度的3位剩余2个字节来存储NULL标识,但它确实以这种方式存储?
- SQL Server中“Null”值的大小 - 至于我,最热门的答案令人困惑。 @马克Byers的说“如果该字段为固定宽度存储NULL采用相同的空间的任何其它值 - 该字段的宽度”,但它不可能存储呈相同的计数的标准整数值的时间间隔和附加NULL值位。那么,“如果该字段为可变宽度的NULL值不占用空间” - 再次存储NULL不能采取任何空间都 - 它必须存储空值一些标记。与其他答案类似的混淆:有人说它需要2个额外的字节,有人 - 只有1个字节。
- http://home.clara.net/drdsl/MSSQL/DataTypes.html - 具有类型大小的漂亮表,但同样没有专用于NULL值的表。