【发布时间】:2019-10-21 14:38:11
【问题描述】:
我有一组大表,每个表都有很多记录。我正在编写一个 Python 程序,根据这些记录上多个列的值,SELECTs 来自这些表的大量记录。
基本上,这些将是很多形式的查询:
SELECT <some columns> FROM <some table> WHERE <column1=val1 AND column2=val2...>
每个表都有一组不同的列,否则上面的SELECT 公式成立。
默认情况下,我打算通过psycopg2 PostgreSQL 数据库驱动程序运行所有这些查询,每个查询都作为一个单独的查询。但我想知道是否有更有效的方法来解决这个问题,因为这样的查询数量非常多——数千甚至更多。
【问题讨论】:
-
如果您的表具有相同的列,则您的数据模型有问题。通常,对于给定的一组列,您只需要一个表。它使这样的查询变得更加简单。
-
表格有列,而不是字段。
-
@GordonLinoff 不同的表有不同的列集。我会看看我是否可以编辑我的问题以使其更清楚。
-
如果您有这些查询一一进入,那么您无能为力,除了优化查询、使用索引、分区(如果需要)等。如果您要批量选择多条记录,但是,有一些选项:主要思想是基于类似查询(具有相同的列)创建临时查询表并在这些过滤表上执行
JOINs- 这可能会显着加快您的查询速度,具体取决于您拥有的查询。 -
@SergeyKudriavtsev 这些查询是由程序批量生成的。所以你的想法可能会奏效。
标签: python sql postgresql psycopg2 rdbms