Postgresql

Postgres db charfields 的合理 max_length

  • November 2, 2021

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

引用自:https://dba.stackexchange.com/questions/301985