Nei*_*l P 3 sql-server datatypes sql-server-2014
我有两个相同的表并保存相同的数据行。
一个为表的每一列使用 varchar(255),另一个为每列正确键入(使用日期、整数、十进制等)。
使用 Management Studio 的属性窗口,我可以看到将所有数据存储为 varchar 的表要小得多,这不是我期望看到的。我的理解是 int 只使用 4 个字节的空间,因此使用的空间比存储为 varchar 的 int 少得多。
我应该寻找什么来了解这里发生的事情?两个表在 int 列上都有一个主键,没有其他索引。出于测试目的,它们填充了来自同一源查询的相同数据集。
所以这原来是因为我存储的数据的形状,在这个实例中,varchar 真正占用的空间更少。
表中的许多列都是整数和数字(38,12)(因为数据源使用这种类型,所以非常庞大)。但是,这些列中的许多值都是 0 或整数。因此,varchar(255) 将此值存储为 3 个字节(1 个字节,加上两个开销),而 int 将使用 4,而数字将使用 17。这导致使用正确的类型以减少存储在整个桌子上效率很高。
为了减少使用的存储空间,我需要检查是否可以更改类型(从 int 到 smallint 或 numeric(32,12) 到 numeric (19,8) 等),或者看起来稀疏列是一个很好的解决方案,其中有很多 0 或 null 预期。
归档时间: |
|
查看次数: |
920 次 |
最近记录: |