PostgreSQL IN 运算符在外部文件中有很多值

Der*_*unk 5 postgresql

我有一个包含很多标识符的文件,每行一个。我还有一个带有这些 id 超集的数据库。我只想用感兴趣的 id 查询数据库。有没有办法“导入”外部文件,或者我是否必须将所有 300 个值复制到 IN 表达式中?这是一个大数据库。

Eva*_*oll 5

当然,要么,

  1. 使用带有VALUES语句的 CTE 。
  2. 使用带有索引的TEMP

这是 CTE 的示例。

WITH t AS (
  SELECT * FROM ( VALUES
    (1),
    (2),
    (3)
  ) AS t(table_id)
)
SELECT * FROM t
JOIN myTable
  USING (table_id)
;
Run Code Online (Sandbox Code Playgroud)

只是稍微复杂一点,将它们放入一个临时表中,允许您对其进行索引。如果您有外部文件(取决于格式),您还可以使用外部数据包装器创建一个 FOREIGN TABLE 。在没有索引的情况下尝试一下,然后将其复制到表中,看看索引是否会加快速度。