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

Подскажите, плз, можно ли в селекте указать, какие партишены использовать

в запросе, не указывая их условие явно в WHERE?

Суть: есть таблица, в которой uuid является частью первичного ключа, и один uuid всегда соответствует одному дню данных. Мы всегда передаем в запросе where uuid in (x...), соответственно передавать еще и and date >= y and date <= z — избыточно с точки зрения выполнения запроса. Но сейчас это нужно, чтобы отбросить партишены, которые не содержат этот date. Соответственно вопрос в том, можно ли отбросить лишние партишены без того, чтобы происходила еще и дополнительная ненужная фильтрация самих строк?

12 ответов

20 просмотров

таблицу в которой uuid часть первичного ключа можно выкинуть слишком сильное кардиналити у ключа получается сделайте поля типа дата и низко кардинальные поля в PK и bloom_filter data skip index лучше для UUID

https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes

можно через виртуальную колонку _part типа select _part, * from tablename where _part like '20200907%'; Но я не вижу чем это проще чем date>= and date<

перечитал, так понял partition для ретеншна данных, а в обращении по ключу вы не хотите чтоб работа была по всем партишнам. если не будете давать условии по partition key, будут читатся все, и это будет ужасно когда партиций много (например у нас более 15 тыс, запросы просто не работаеют когда в where не указаны ключи partition key) Либо менять партиционирование, либо давать в where

Ilia-Ablamonov Автор вопроса
【D】【J】
перечитал, так понял partition для ретеншна данных...

да, все так. вариант о котором еще думал — кодировать дату и версию выгрузки в одно поле (еще и компактнее можно, например 16+16 бит, таплом или упаковывать руками), и для выборки делать тот же where uid in (...), а партишены делать по первому элементу тапла или по битовому выражению, если руками. но еще не проверял, имеет ли это смысл и работает ли как хочется (но по идее должно).

Ilia Ablamonov
да, все так. вариант о котором еще думал — кодиро...

усложняете зачем то, тогда проще хранить дату и запрашивать по ней тоже как exact match Date IN (YYYYMMDD) and UUID IN (list)

Ilia-Ablamonov Автор вопроса
【D】【J】
усложняете зачем то, тогда проще хранить дату и за...

тогда две фильтрации вместо одной, нет? так как раз сейчас работает

Ilia Ablamonov
тогда две фильтрации вместо одной, нет? так как ра...

вас что именно тревожит в двух фильтрациях? какую проблему решить пытаетесь?

это делается указывая эти условия в where. Это именно так и работает. Нужные селекту партиции выбираются на самой первой стадии запроса, по метаданным партам в памяти

Ilia-Ablamonov Автор вопроса
Denny [Altinity]
это делается указывая эти условия в where. Это име...

Да это понятно, вопрос был в другом. Но в любом случае, переделаем чтобы не надо было хотеть странного.

Ilia Ablamonov
Да это понятно, вопрос был в другом. Но в любом сл...

а если вопрос про update / delete то все иначе конечно.

Ilia-Ablamonov Автор вопроса
Denny [Altinity]
а если вопрос про update / delete то все иначе кон...

В том, чтобы отбросить лишние партишены, но не делать лишнюю (не играющую роли с точки зрения бизнеслогики) фильтрацию на уровне строк.

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта