from local_table) // replacing merge tree
any left join (select … from view) // ~100 записей, запрос за 0.001 отрабатывает
запрос этот отрабатывает за 10 секунд
если обернуть верхний запрос во view
create view blabla as селект верхний запрос
то select count() from blabla будет работать уже 30+ секунд
по дебагу глянул, что 2021.03.09 11:34:50.924856 [ 27746 ] {27683dd2-c134-4d4d-a429-19c28d24f620} <Debug> CreatingSetsBlockInputStream: Created. Join with 20244545 entries from 20244545 rows. In 6.572 sec. вот эта штука работает дольше всего.
в чем концепутальная разница 1 и 2 запроса ?
Какая версия?
20.3.12.112
были некоторые проблемы с перфомансем у view set enable_debug_queries=1; ANALYZE .... и оба запроса
второй(который вью) отваливаетсся по памяти DB::Exception: Memory limit (for query) exceeded: would use 6.00 EiB (attempt to allocate chunk of 6917529027638199666 bytes), maximum: 18.63 GiB. в первом Logical error: incorrect table expression. хотя без аналайза все ок в обеих я чекал вообще через трейс левел
У вас есть WITH в этом запросе?
нет хотя есть, который any left join (select … from view) // ~100 записей, запрос за 0.001 отрабатывает но я думаю, что не в нем проблема
https://github.com/ClickHouse/ClickHouse/issues/12293 Была подобная проблема с allow_push_predicate_when_subquery_contains_with 0/1 Но не похоже что это оно
там просто with типа with select value from table limit 1 , супер просто
Попробуйте тогда все таки выполнить запрос c set allow_push_predicate_when_subquery_contains_with=0; и set allow_push_predicate_when_subquery_contains_with=1;
это видимо в более поздних версиях. у меня нет такой настройки
Обсуждают сегодня