在 PostgreSQL 上执行大量类似 SELECT 查询的最有效方法是什么?

The most efficient method of performing a large number of similar SELECT queries on PostgreSQL?

我有一组大的 tables,每个都有很多记录。我正在编写一个 Python 程序,该程序 SELECTs 来自这些 tables 的大量记录,基于这些记录中多个列的值。

本质上,这些将是大量以下形式的查询:

SELECT <some columns> FROM <some table> WHERE <column1=val1 AND column2=val2...>

每个 table 都有一组不同的列,但上面的 SELECT 公式成立。

默认情况下,我打算通过 psycopg2 PostgreSQL 数据库驱动程序 运行 所有这些查询,每个查询都作为一个单独的查询。但我想知道是否有更有效的方法来解决这个问题,因为会有大量此类查询 - 数千或更多。

如果所有查询的 SELECT 列表条目都相同(相同的条目数和相同的数据类型),您可以使用 UNION ALL 组合多个这样的查询。这不会减少数据库的工作量,但会减少客户端-服务器往返次数。这可能是一个巨大的改进,因为对于短查询来说,网络延迟通常是主要成本。

如果您的所有查询都有不同的 SELECT 列表,您将无能为力。