我正在使用带有 Postgres 后端的 Django。
在 Django 模型中,我必须在 Charfields 上设置 max_length 属性,然后 Django ORM 在后端处理数据库。在很多情况下,这些都是相当小的字段(例如名称或城市名称等),我不认为它们会很长。该应用程序处理没有特别清理的现有数据。所以我不想设置类似的东西
name = models.Charfield(max_length=50, ...)
只是要意识到有人在该字段中写了三倍的名字,并且该字段的长度为 75 个字符。另一方面,我不想设置巨大的值并不必要地增加数据库大小只是为了省点麻烦。
我目前的想法是 Postgres 可能会保留一些最小的空间(例如 max_length=10 和 max_length=15 可能都占用相同的存储空间),所以我会将 max_length 设置为那个最小大小(或它的低倍数)。
你推荐什么,为什么?
如果您没有应用程序逻辑强加的长度限制,请使用
text
而不是varchar
. 这比施加任意长度限制要好。text
并且varchar
在 PostgreSQL 中是相同的,字符串只会占用它实际需要的空间。你不会失去性能。