0

我在 PostgreSql 中有 7 个表,它们与 Django 1.3 应用程序集成。在这 7 个表中,我们将根据具有不同列数据的所有表中存在的名称访问。某些特定名称包含 1,00,000 行。所以,我的问题我需要检索表中属于特定名称数据的所有行吗?

因此,我为检索操作实现了 django 模型 orm 查询集。但似乎没有效果。即使我进行了分页,也需要花费大量时间来加载页面,并且还为所有表的所有列创建了索引。

我仍然收到nginx-504 网关超时

因此,我还需要优化应该从所有表中检索到 1,00,000 行的查询。

改进查询优化的方法有哪些?

我如何在 django 中进行这种具有挑战性的操作?

在这里我粘贴了我的代码http://pastebin.com/yNy5pxGG

请建议我正确的方向!

编辑1:

我的查询: http: //pastebin.com/A9B2ExVk

表格:

 fda_sheet1 = 208778 unique rows
 fda_sheet2 = 291958 unique rows
 fda_sheet3 = 191958 unique rows
 fda_sheet4 = 676363 uniq rows
 fda_sheet5 = 262651
 fda_sheet6 = 742707
 fda_sheet7 = 300000

这些是我的个人表格和行数。在这里,我将全部进行 LEFT JOIN 以制作一张表格以提高性能。

这也不好,因为该表占用了超过 700GB 的大小。

处理查询的方法是什么?

注意事项

这些表包含不同级别的数据。主要是我们有药物名称和 ISR 编号。此外,所有其他表中都将存在 ISR 编号。根据药物,我们将获取 ISR 编号,并使用 ISR 编号,我们将查询其他数据在其他表中。希望你了解瓶颈

所以, 1. 合并表也是问题 既然穿越了700GB

2.跨多个表查询也是问题由于每个表中的多行具有相同的isr号。

你认为还有其他最好的方法吗?

如果您有任何疑问,请告诉我

请建议我们解决这个问题。

4

1 回答 1

1

在评估所有查询(将它们转换为list并创建total_data. 因此,在任何分页工作之前,您需要检索所有数据并将其放入内存。你应该避免这种情况。

此外,正如我所见,您将一个对象的数据分成 7 个不同的表 - 这对 Django 的 ORM 不利。如果您无法修改数据库模式,您可以尝试在数据库中创建一个视图,通过将所有表连接在一起来模拟一个大表。

因此,所有加入和检查空字段都将在 DB 中完成,您将拥有更清晰的 Py​​thon 代码,并且运行速度会更快。

于 2012-04-18T04:03:26.693 回答