【问题标题】:Efficiently save the same time for many objects (postgresql and generally)有效地为许多对象节省相同的时间(postgresql 和一般)
【发布时间】:2018-05-08 11:45:48
【问题描述】:

我有一个包含许多对象的 Django 项目(每个对象在 Postgresql 表中都有一行)。 大量对象具有相同的时间值。

我想知道为许多数据对象中的每一个使用相同的时间字段(尽管其中数百个具有相同的值),还是创建一个可以节省时间的“上下文”对象,并保持对于每个对象,一个上下文对象的引用(在表中 - 的 id)。

使用 ids(而不是时间)更快,尽管对于上下文对象应该使用两个查询(一个用于上下文,第二个用于引用上下文的数据对象)。 假设多次保存相同的时间是浪费空间(是吗?),第二种选择更好。

我不是数据库专家,很高兴听到哪个选项更好?还有什么需要考虑的?

【问题讨论】:

  • 你看过.bulk_create()方法吗?可能这就是你想要的吗?
  • @Chiefir 问题不是关于创建过程,而是关于在 DB 中表示数据的两种不同方式。
  • 那么在问题标题中使用store 而不是save 会更好吗?现在有点不清楚了。

标签: django database postgresql memory-efficient


【解决方案1】:

在我看来,在每行中保存相同的时间通常不是一个坏主意,因为在单独的表中拥有时间会迫使 Django ORM 进行大量的 JOIN 操作,这比在单个表上进行查询要慢。

我认为节省一点空间不值得为处理多个表带来不便。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多