с датами/временем?
Есть табличка вида:
CREATE TABLE analytics.transactions
(
user UInt32,
dt DateTime,
........
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(dt)
ORDER BY (user,dt);
И с датой у меня совсем не получается подружиться:
1) не получается её сжать, например при кодеке CODEC(Delta(2), ZSTD) у меня сжимается всего на 1 процент. По дефолту - на 5.
2) и при minmax и при set индексах выборка по диапазону дат (впрочем, как и максимальной даты) занимает достаточно много времени. Как-то могу я оптимизировать запросы такие? И не завезут ли в кликхаус btree для подобных целей?)
У CH нет btree. Для вашей таблицы запрос на диапазон дат без указания user 1. выберет все покрывающие запрос партиции по toYYYYMM(dt) 2. не сможет использовать индекс по user, поэтому запустит по ним скан 3. для каждого уникального user по индексу выберет dt. Если уникальных user много, а дат у них мало, то будет практически фулскан по выбранным на этапе 1 партициям
Обсуждают сегодня