Postgresql
Postgres db charfields 的合理 max_length
我正在使用帶有 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 中是相同的,字元串只會佔用它實際需要的空間。你不會失去性能。