我需要查询redshift表中的数据,条件中的in
部分中包含很多(大约300K)值,并将结果存储到CSV中。
例如。 select * from table where column_name in ('123','456','678',.....)
in
部分中的值大约为300K,结果数据将具有500万行。
该表已经在我要搜索的同一列上排序。
最佳方法是什么?
我尝试了以下方法:
出现此错误:出了点问题。请重试。
答案 0 :(得分:3)
使用COPY
将300k值加载到临时表中,然后使用联接而不是IN ()
列表。
UNLOAD
是提取数据的最佳方法,500万行太多的数据无法提取为SELECT
语句。
答案 1 :(得分:0)
好的,我找到了一个更好的方法。显然,使用CTAS查询创建临时表并将临时表卸载到S3所需的时间较短。
直接将查询卸载到S3大约需要一个小时,并且仍在运行。创建一个临时表需要4分钟,而S3卸载临时文件则需要3分钟。