Redshift - 在查询的 'in' 部分查询 300K 个值

Redshift - Query with 300K of values in the 'in' part of query

我需要在条件的 in 部分使用大量(大约 300K)值在 redshift 中查询 table 中的数据,并将结果存储到 CSV 中。

例如。 select * from table where column_name in ('123','456','678',.....) in 部分中的值约为 300K,结果数据将有 500 万行。 table 已经在我正在搜索的同一列上排序。

什么是最佳方式?

我试过以下方法:

  1. 获取完整数据 table 到 CSV 和 运行 AWS Athena 上的查询。 Athena 根本无法 运行 查询。

It gave this error: Something went wrong. Please retry.

  1. 直接在 redshift 上使用了 UNLOAD 查询。太费时间了。

使用 COPY 将 300k 值加载到临时 table 中,然后使用连接而不是 IN () 列表。

UNLOAD 是提取数据的最佳方式,500 万行数据太多,无法作为 SELECT 语句提取。

好的,我找到了更好的方法。显然,使用 CTAS 查询创建临时 table 并将临时 table 卸载到 S3 需要更短的时间。

直接将查询卸载到 S3 花费了大约一个小时,而且仍然 运行。创建一个临时文件 table 花了 4 分钟,S3 卸载临时文件花了 3 分钟。