【发布时间】:2015-06-25 08:29:25
【问题描述】:
我需要在我的django 应用程序中使用一些经常更改的aggregate 数据,如果我进行动态计算,可能会出现一些性能问题。因此,我需要将aggregate 结果保存在表格中,并在数据更改时更新它们。因为我使用django,有些选项可能存在,有些可能不存在。例如,我可以使用django signals 和一个表,当post_save 信号发出时,它会更新结果。另一种选择是materialized views in postgresql 或indexed views in MSSQL Server,我不知道如何在django 中使用或者django 是否支持它们。在django 中执行此操作以提高性能和结果准确性的最佳方法是什么。
【问题讨论】:
-
您可能必须通过 rawsql 查询来使用它们。
-
@wobbily_col 如何使用 django 信号或编写一些函数来更新结果?
-
问题是(据我所知)您不能真正将 Django 模型映射到物化视图。如果您在数据库中使用它们,您将不得不使用原始 sql 与它们进行交互。如果您正在使用函数,您仍然必须以某种方式与数据库对话,要么通过带有模型的标准 django ORM,要么通过原始 sql。对您实际尝试实现的目标进行更详细的描述会很有用。
-
@wobbily_col 我有三个相关的表,每个表都有一个
number字段,当将新记录添加到这些表之一或其中的number字段时,将更新number字段的总和在每个表中都应该更新以保持平衡。这些表之一与用户模型有关,我需要保持用户相关活动(number字段的总和)处于跟踪状态。我希望我的观点。如果您需要任何额外信息,请告诉我。 -
@wobbily_col 你对使用 raw_sql 或其他方式是正确的,但问题是我想找出最简单和最好的方法。
标签: python sql-server django database postgresql