我有一个类似的查询:
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语句每次执行外部查询必须更快,对吗?
答案 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”列作为分发键,并且两个表都使用相同的数据类型声明了该列。