据我所知,有关SO的问题有很多问题,但我还没有找到一个肯定的回答:“是的,这是怎样的......”
所以这又是:在SQL Server中将无符号整数值(32位值或32位位图)存储到4字节字段的可能方法是什么?
以下是我见过的想法:
1)对所有值使用-1 * 2 ^ 31偏移量
2)使用4个tinyint字段
3)使用二进制(4)
答案 0 :(得分:2)
IMO,你有4个字节存储2 ^ 32个正值的正确答案:标准int
和你做数学或binary(4)
,与你所说的相反,只消耗4个字节的空间。 (仅varbinary
将产生额外的2个字节的存储空间)。一系列tinyint
或smallint
列将是毫无道理的IMO。
当然还有另一种存储2 ^ 32正值的解决方案,但需要8个字节:带检查约束的bigint。考虑到今天的存储和内存有多便宜,IMO,这是最简单和最便宜的解决方案,考虑到程序化的箍,你将不得不跳过其他解决方案,但显然你有理由想要在每一行保存额外的4个字节