2016-07-19 3 views
1

У меня есть запрос, как:Redshift: Максимальное количество элементов в разделе «IN»?

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

Мои вопросы:

Сколько элементов можно использовать в Redshift в Пункте? Сохранение фактических идентификаторов вместо оператора sub-sql должно быть быстрее для выполнения этого внешнего запроса каждый раз, правильно?

+0

Нет ограничений на количество элементов, возвращаемых подвыборкой. По крайней мере, не в Postgres, и поскольку Amazon является развилкой (хотя и из действительно старой версии), не должно быть никаких ограничений. –

ответ

2

Из того, что я знаю, нет предела, но если вы собираетесь принести много данных, которые вы можете использовать, существует.

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; 

Это должно быть гораздо быстрее

Также вы можете использовать пересекаются, а не в

0

Как «пользователь» уже заявил, лучше производительность будет с WHERE EXISTS положение и подзапрос. Поскольку вы упомянули о производительности как важном моменте, я должен также указать, что более важным фактором эффективности является распределение ваших таблиц. Чтобы это было хорошо, вы должны дважды проверить, что обе таблицы имеют в качестве ключа распределения столбец «profile_id», и обе таблицы объявили столбец, используя тот же тип данных.

Смежные вопросы