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
Обсуждают сегодня