用于连接django模型中数据的性能优化

时间:2015-12-14 13:05:34

标签: python django performance django-models database-performance

在我的工作中,我经常在我的django模型中有两个表,并且必须连接它们以将此数据作为csv返回。该数据未通过外键连接,但它们具有连接它们的标识符。这是因为我们从两个不同的来源导入这些数据,有时缺少对应的数据,所以在创建条目时我无法连接它。

我的问题是:如果您认为我经常需要返回此数据,那么在性能方面连接此数据的最佳方法是什么?

  1. 方法:创建一个新模型,将数据(如m2m)或父类与标识符连接起来,两者都连接到。
  2. class OrderInvoiceConnector(models.Model):
        order_data = models.ForeignKey(Order, related_name="invoice")
        invoice_data = models.ForeignKey(Invoice, related_name="order")
    
    1. 方式:创建一个仅保存csv导出所需数据的新模型。类似的东西:
    2. class ConnectedData(models.Model):
          invoice_id = models.CharField(max_length=255)
          country_iso = models.CharField(max_length=255)
          invoice_date = models.CharField(max_length=255)
          tax = models.FloatField(max_length=255)
          price = models.FloatField()
      

1 个答案:

答案 0 :(得分:1)

我会选择第二种变体,因为您提到加入会很昂贵,并且每天都会生成数据更改。如果您创建只读模型,您将在单个表查询中打包所有必需的数据以供用户使用。您必须使用某些自动化作业填充数据,但在您提到的场景中这看起来是可以接受的。