понимаю, что в случае, когда имеется у меня запрос вида c представлениями:
select a,b,c from view_1 where a in (select a in view_2 where d='some value' and dt>today()-30 group by a order by a) group by a,c
То лучше всего будет сделать таблицу AggregatingMergeTree для таблиц во view_2 или временную таблицу на движке Memory(), куда скидывать результат подзапроса, и ссылаться в результате на времянку? Я предполагаю это как варианты обхода проблемы с проседанием по производительности, потому что по трейсингу логов сейчас видно, как для каждой таблицы внутри view_1 подзапрос каждый раз выполняется заново, тем самым собирая для каждой таблицы во view_2 результат...
Если надо много запросов в короткий промежуток времени, то можно наверное и временную таблицу сдеелать, а если постоянно делаете запросы то почему не Materialized VIEW?
Мне об этом и подумалось, кстати
Обсуждают сегодня