184 похожих чатов

Привет. Кто-нибудь может помочь с советом в следующей ситуации? Есть таблица

MergeTree meter_values_buffer, где один из индекс - числовой StationId
Есть отдельно БД Postgres, где есть соответствие строкового identity к этому StationId. Набор пар StationId->identity небольшой. Оба значения в БД уникальны, так что можно identity->StationId сделать, если надо

Сейчас есть выборка из таблицы meter_values_buffer, куда в WHERE входит StationId, данные забираются из Clickhouse молниеносно
Задача: заменить StationId на identity в WHERE, не теряя в производительности, чтобы можно было фильтровать сущности по identity

Я создал flat() dictionary с названием station_identities из данных Postgres, который хранит StationId -> identity. Попробовал сделать meter_values_buffer RIGHT JOIN id_map по StationId, но WHERE отрабатывает фантастически медленно, даже если делать WHERE по StationId

Запросы: https://pastebin.com/FEL25L7F

Куда можно копнуть для того, чтобы в WHERE заменить StationId на identity без добавления отдельного столбца с ним?

4 ответов

18 просмотров

не надо делать join со словарями. Только dictGet. https://pastebin.com -- дохера рекламы, прямо елка новогодняя pastila.nl -- нету рекламы https://fiddle.clickhouse.com/ -- нету рекламы

чувствую что можно запилить типа where .... = dictGet ....

Mikhail-Kladkevich Автор вопроса
Denny [Altinity]
не надо делать join со словарями. Только dictGet. ...

О, поковырялся, вот так вот получилось и работает очень быстро, в том числе выдаётся доступ только к записям, у которых есть StationId в словаре: CREATE VIEW v_tst AS SELECT Time, Value, LocationType, FieldType, UnitId, StationId, dictGetOrNull('station_identities', 'StationIdentity', StationId) as StationIdentity FROM meter_values_buffer WHERE dictHas('station_identities', StationId);

Mikhail-Kladkevich Автор вопроса
Denny [Altinity]
чувствую что можно запилить типа where .... = dict...

И прям StationIdentity можно потом использовать в SELECT над v_tst

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта