我将表导入MS SQL数据库。该表非常大,几乎完全填满了数据库。我使用的导入工具将我的数字列保存为varchar(50)
,但我希望它们是整数。因此,我将列更改为int
。
alter table <my_table> alter column <my_column> int
据我所知,int
列应占用较少的磁盘空间,但上述查询会因可用空间不足而失败。
导致此问题的原因是什么,是否有可能的解决方法?
答案 0 :(得分:4)
整数列使用4个字节。
基于documentation,可以轻松计算varchar列的大小:
存储大小是输入数据的实际长度+ 2个字节。 varchar的ISO同义词是共变或特征变异。
因此,如果您的列主要由单个数字组成,那么它只使用3个字节。 NULL
值甚至使用更少的值(我认为只有两个长度字节)。当然,这表明您可以使用smallint
或tinyint
,从而节省更多空间。