select 
                      
                      
                               number as x,
                      
                      
                               x%2 as y
                      
                      
                             from numbers(20)
                      
                      
                         )
                      
                      
                         ,
                      
                      
                         t1_gr as (
                      
                      
                             select groupArray(x) as x
                      
                      
                             from t1
                      
                      
                             group by y
                      
                      
                             having y
                      
                      
                         ),
                      
                      
                         t2 as (
                      
                      
                             select 
                      
                      
                               number as x
                      
                      
                             from numbers(20)
                      
                      
                         ),
                      
                      
                         t3 as (
                      
                      
                             select *
                      
                      
                             from t2
                      
                      
                             where x in t1_gr
                      
                      
                         )
                      
                      
                         select *
                      
                      
                         from t3
                      
                      
                      Задумка в том, чтобы сделать фильтрацию таблицы по признаку присутствия её ключей в другой. 
                      
                      
                      Я понимаю, что тут достаточно cte t1_gr заменить на:
                      
                      
                      ...
                      
                      
                      t1_gr as (
                      
                      
                             select x
                      
                      
                             from t1
                      
                      
                             where y
                      
                      
                         ),
                      
                      
                      ...
                      
                      
                      и всё будет работать. Но это работает не очень быстро для моего случая и я подумал, что возможно группировка с хэвингом была бы быстрее. Что думаете?
                      
                      
                    
сколько записей в оригинальных t1 и t2?
А почему не сделать not in (SELECT id from table2)
329788 в t1, t2 порядка нескольких миллионов
почему not in? я как-то не проникся идеей
если изначально задача select * from t1 where id in (select id from t2) то попробуйте select * from t1 where id in (select id from t2 where id in (select id from t1))
t1 фильтруется по булеву признаку y
тогда добавить его в order by
Обсуждают сегодня