将max_length设置为一个非常大的值会占用额外的空间吗?

时间:2015-06-05 10:04:23

标签: python django database database-design django-models

我在模型中有一个字段,

name = models.CharField(max_length=2000)

,输入的数据是,

name='abc'

django模型的max_length设置为2000,而输入的数据仅为长度3, max_length是否为每个对象保留数据库表中2000个字符的空间?保存模型对象后,空间是否已释放?

如果数据库中的对象数量是几千或几百万,那么设置更高的max_length会增加数据库的大小吗?

数据库是postgres

1 个答案:

答案 0 :(得分:4)

CharField将由PostgreSQL中的character varying(max_length)表示。

来自docs

  

短字符串(最多126个字节)的存储要求是1个字节加上实际字符串,其中包括字符空格填充。较长的字符串有4个字节的开销而不是1个。

因此,字符串将占用的磁盘空间取决于它的长度+小开销,而不是字段的最大长度。

使用较高的max_length不会增加db使用的磁盘空间。