две таблицы, если одна из них имеет млрд записей?
а вторая сколько? если меньше десяти миллионов и памяти достаточно то загоните ее в словарь или в engine=Join() таблицу dictGet / joinGet вместо join
Привет. У меня подобная проблема. 2 таблицы по 700 млн. записей. Одна - очень широкая (1000+ колонок), вторая - всего 4
ну вторую... загоняйте по кускам в engine=Join INSERT INTO join_table SELECT t1 WHERE ... и потом SELECT joinGet() FROM t1 WHERE ... напрямую вы все равно замаетесь это джойнить... ну или StarRocks вместо clickhouse берите =) пусть они объясняют что вообще JOIN на таких объемах, означает epic fail и что у вас с архитектурой такое себе...
Да, напрямую, даже с разбивкой на куски заманался. Словарь не сработал
ну короче вам надо добиться чтобы одна таблица сканилась... а вторая в памяти была... то есть и t1 вам по частям надо выбирать.. и t2 отдельно по частям надо загонять в память...
Не сработало (((. У меня ключ состоит из 2 полей. А SELECT t1 ALL INNER JOIN t2_join_table USING k1, k2 Не поддерживается (((( https://github.com/ClickHouse/ClickHouse/issues/29950
https://clickhouse.com/docs/en/sql-reference/functions/other-functions#joinget
Да-да, я знаю эту функцию, спасибо. Хотел более "нативно"
Обсуждают сегодня