Django Postgres ArrayField vs One-to-Many关系

nor*_*tpy 12 django postgresql django-models

对于我的数据库中的模型,我需要为特定字段存储大约300个值.如果我使用Postgres特定的ArrayField而不是具有One-to-Many关系的单独表,那么在查询性能简单性方面会有什么缺点?

Pau*_*aul 15

如果使用数组字段

如果您使用M2M

  • 您可以更轻松地过滤这些相关值
  • 默认情况下,这些字段会被推迟,prefetch_related如果您需要它们可以使用,如果您只想加载这些值的子集,则可以使用它们
  • 由于密钥和额外的id字段,数据库中的总存储量将略微高于M2M
  • 在这种情况下,由于密钥,连接的成本完全可以忽略不计.

就个人而言我会说M2M表,但我不知道你的具体应用.如果您要处理大量数据,则可能需要抓取代表性数据集并使用它来测试这两种方法.