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

Подскажите пожалуйста, чет не врублюсь. Может ли у mat. view быть

первичный индекс отличный от order by?
Пытаюсь сделать, пишет

Primary key must be a prefix of the sorting key, but its length: 5 is greater than the sorting key length: 1 (version 20.9.2.20 (official build))

30 ответов

51 просмотр

Таблица, в которую прилетают данные из MV, у вас, скорее всего, из семейства MergeTree. Правила создания таблицы такие же, как и для обычных MergeTree таблиц.

L-dar- Автор вопроса
Artem
Таблица, в которую прилетают данные из MV, у вас, ...

Ну да, я это читал. Там и написано, что первичный ключ может отличаться от ордер

L-dar
Ну да, я это читал. Там и написано, что первичный ...

Может, но должен быть частью order by, насколько я помню.

L-dar- Автор вопроса
Artem
Может, но должен быть частью order by, насколько я...

мда...Засада. Как тогда быть, использую AggregatingMergeTree, чтоб схлопывалась по одной колонке, т.е. эту колонку указывают в order by. Но мне необходимы еще индексы, получается не смогу создать

L-dar
мда...Засада. Как тогда быть, использую Aggregatin...

Схлопывается будет по первичному ключу. Сортировка по order by.

L-dar- Автор вопроса
Artem
Схлопывается будет по первичному ключу. Сортировка...

Что за сервисный ключ? В не вижу в доке https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/aggregatingmergetree/

L-dar
Что за сервисный ключ? В не вижу в доке https://cl...

Это телефон шалит. Имелся ввиду первичный ключ.

L-dar- Автор вопроса
Artem
Это телефон шалит. Имелся ввиду первичный ключ.

Замкнутый круг получается. Хочу схлопывать по одному полю. Подразумевается, что по этому полю я делаю группировку в запросе при создании Mater.View Но! в запросе поля GROUP BY должны быть такими же, что и в ORDER BY при создании Mater.View. В моем случае группировка идет по одному полю...Как мне тогда добавить индексы...Надеюсь понятно расписал...

L-dar- Автор вопроса
Ivan Kalinin
Какие индексы?

певичный ключ имею ввиду. Хочу ускорить выборку, поэтому хочу добавить поля. Но здесь схлопываются по этому ключу

Artem
Схлопывается будет по первичному ключу. Сортировка...

Схлапывается по order by. Primary key это поля в которые будут в индексе

L-dar
певичный ключ имею ввиду. Хочу ускорить выборку, п...

Если поля просто так добавить в первичный ключ, то ничего автоматически не ускорится

L-dar
Замкнутый круг получается. Хочу схлопывать по одно...

Никак не добавить. И смысла добавлять нету.

L-dar- Автор вопроса
Denny [Altinity]
Никак не добавить. И смысла добавлять нету.

Смысл есть, чтоб ускорить выборку по этим ключам

L-dar
Смысл есть, чтоб ускорить выборку по этим ключам

Смысла нет. В тех полях недоагрегированные данные.

L-dar- Автор вопроса
Denny [Altinity]
Смысла нет. В тех полях недоагрегированные данные.

Но в MV в результате будут находится сагрегированные данные. т.е. результат схлопывания. Как на эти поля поставиьт какой нибудь индекс?

L-dar- Автор вопроса
Denny [Altinity]
Смысла нет. В тех полях недоагрегированные данные.

Для таблицы, которую я указал наверху, я создаю такой MV CREATE MATERIALIZED VIEW table_mv ENGINE = AggregatingMergeTree() PARTITION BY toStartOfWeek(created_ts) ORDER BY (id) PRIMARY KEY (id) POPULATE as select id, any(col1) as col1, any(col2) as col2, any(col3) as col3, any(col4) as col4 from table GROUP BY id; Но я хочу использовать индекс еще по полю col2. Как я понял, это сделать никак, если только создавать еще одну mv

L-dar- Автор вопроса
Denny [Altinity]
Нельзя и не имеет смысла.

Спасибо. Похоже надо как то оптимизировать запросы с raw данными. Только возможностей не так уж много у clickhouse. Пытаюсь выкрутится за счет where in (Select ...) Так себе результаты

L-dar
screenshot Спасибо. Похоже надо как то оптимизировать запрос...

ну никак не надо оптимизировать. Если КХ слишком медленный для вас возьмите что-нибудь другое, например memsql, я бы точно попробовал, если бы у меня были такие странные требования

L-dar- Автор вопроса
L-dar
В чем странность требований?

Вам надо искать по метрикам. Все ищут по дименшинам

L-dar
screenshot Спасибо. Похоже надо как то оптимизировать запрос...

вам просто нужен дополнительный индекс? ну так добавьте дополнительный индекс. https://clickhouse.tech/docs/ru/sql-reference/statements/alter/index/ https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes

L-dar- Автор вопроса
Denny [Altinity]
Вам надо искать по метрикам. Все ищут по дименшина...

Стыдно, но я не понял о чем речь. Можно указать вектор?)

L-dar
screenshot Спасибо. Похоже надо как то оптимизировать запрос...

у вас ИД в индексе первым идет? а сколько дистинкт ИД возвращается из самого глубокого запроса?

L-dar- Автор вопроса
【D】【J】
у вас ИД в индексе первым идет? а сколько дистинкт...

Индекс наоборот последним поставил. Где то читал, что индексы нужно раставлять с большего фокуса на меньший, если так можно назвать. Насчет Ид, дофига возвращается, если брать глубокий, то падает по памяти

L-dar
Индекс наоборот последним поставил. Где то читал, ...

ну если в конце то пользы нет. а если попробовать prewhere col1=1 во внутреннем запросе вместо вот этого where ID ( IN ...... ) и замерить время только внутреннего запроса с Format Null?

L-dar- Автор вопроса
【D】【J】
ну если в конце то пользы нет. а если попробоват...

По моему prewhere не подойдет, так мне необходимо найти все id и по ним схлопнуть, а col1 может иметь null. Вот такая таблица

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта