правду же говорят?
А почему должно быть меньше? Фильтров же нет
Ну я так понимаю возмущение, в том, что по идее inner join что то должен отфильтровать
Это намерение. Это ещё до выполнения
Насколько я знаю inner join не фильтрует в кх. Строка читается потом джойнится при хеш джоин
Алгоритм хешджойн не так работает. Идём по ВСЕЙ левой, лукапим в хештаблицу
Это результат, конец трейса. Там же гб/с есть
ага, вот и оно. Значит я неправильно понимал работу хеш джойна, спасибо
Конкретно те строки, из начала трейса.
да я в конце прикрепил Information забыл об этом сказать, сорян
Вспомнил, в экзадате был пушдаун блум фильтра на storage с smartscan. При параллельных джоинах. Но да, это на тоненького. Кстати в кх вполне можно реализовать то же. Минмаксы уже есть. Только надо сначала сделать partitionwise join или как там его общий случай
решил через проброс фильтра крайне коряво вот так: ``` select distinct domain_name from reports_v0.traffic t inner join ( select c.cid, max(c.competition_level) level from reports_v0.competitors c prewhere c.did = cityHash64('google.com') and c.cid != cityHash64('google.com') group by c.cid having level > 0 limit 100 ) as s1 on t.did = s1.cid prewhere t.did in ( select s2.cid from ( select c.cid, max(c.competition_level) level from reports_v0.competitors c prewhere c.did = cityHash64('google.com') and c.cid != cityHash64('google.com') group by c.cid having level > 0 order by level desc limit 100 ) as s2 ) order by s1.level desc; ``` в логах 7934/609223 marks Processed 4.13 million rows
Обсуждают сегодня