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

Есть таблица: CREATE TABLE keywords_stats_products ( `position` Int32,

`product_id` Int32,
`keyword_stat_id` UUID,
`created_at` DateTime DEFAULT now(),
)
ENGINE = MergeTree
ORDER BY (keyword_stat_id, created_at)
SETTINGS index_granularity = 8192


product_id ~ 60.000.000 уникальный значений
keyword_stat_id - бесконечность

На один product_id на данный момент в среднем 900 keyword_stat_id (и будет увеличиваться со врменем)
На один keyword_stat_id в среднем 600 product_id

Вся таблица весит ~200 GB
и которых 5 GB весит keyword_stat_id

Задача сделать так, чтобы можно было быстро выбирать данные по product_id

Попробовал через проекцию
PROJECTION pid_ksid
(
SELECT *
ORDER BY product_id
)


Всё летает конечно же, но теперь таблица вместо 200GB весит 1TB из которых 600GB это keyword_stat_id 😢

Было решено переписать проекцию, чтобы оставить только поля product_id и keyword_stat_id.

Может есть какая-то возможность сделать поиск по product_id таким же быстрым, но чтобы общий вес таблицы при этом не выростал в 5 раз?

7 ответов

13 просмотров

Индекс попробуйте

Станислав- Автор вопроса
Dmitriy Chertkov
Индекс попробуйте

Попробовал, не получилось правильно настроить. minmax выдавал почему-то 0 гранул set(0) не дал смысла Может подскажите пример?

Станислав- Автор вопроса
Станислав- Автор вопроса

Index `idx_product_id` has dropped 121940/122072 granules 🥲

Станислав
Index `idx_product_id` has dropped 121940/122072 g...

я может в смайликах не разбираюсь, но всё же хорошо, не? Индексом отброшены почти все гранулы.

Станислав- Автор вопроса

Вот когда-то спрашивал как поступить

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта