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

her*_*tp. 6 python django performance django-models database-performance

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

我的问题是:如果你想到我经常要返回这些数据,那么在性能方面连接这些数据的最佳方法是什么?

  1. 方式:创建一个新模型,将数据(如m2m)或父类与标识符连接起来,两者都连接到.
class OrderInvoiceConnector(models.Model):
    order_data = models.ForeignKey(Order, related_name="invoice")
    invoice_data = models.ForeignKey(Invoice, related_name="order")
Run Code Online (Sandbox Code Playgroud)
  1. 方式:创建一个仅保存csv导出所需数据的新模型.就像是:
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()
Run Code Online (Sandbox Code Playgroud)

Lor*_*eña 1

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