Redshift:" IN子句中的最大项目"?

时间:2016-07-19 07:45:17

标签: amazon-redshift

我有一个类似的查询:

SELECT count(id), pro.country_code 
FROM profiles AS pro 
WHERE id IN (SELECT profile_id FROM reports) 
GROUP BY pro.country_code;

我的问题:

您在Redshift IN CLAUSE中可以使用多少项?存储实际的id而不是sub-sql语句每次执行外部查询必须更快,对吗?

2 个答案:

答案 0 :(得分:3)

据我所知,没有限制,但如果您要带来大量数据,您可以使用。

SELECT count(id), 
pro.country_code 
FROM profiles AS pro 
WHERE exists (SELECT profile_id FROM reports where pro.id=reports.profile_id) 
GROUP BY pro.country_code;

应该快得多

您也可以使用交叉而不是

答案 1 :(得分:0)

正如“用户”已经说过的那样,您的最佳表现将是WHERE EXISTS子句和子查询。由于您提到性能是一个重要的考虑因素,我还应该指出,更重要的性能因素是您的表分发。为了使其运行良好,您需要仔细检查两个表是否都将“profile_id”列作为分发键,并且两个表都使用相同的数据类型声明了该列。