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

Привет! Подскажите пожалуйста, это окей указывать на проекции таблицы намного больше

значений в order_by для лучшего сжатия, чем стоит на оригинальной?

В основном репорты создаются за некоторый период времени, собственно в ключе первым будет таймштамп
К примеру на оригинальной стоит time, click_id, user_id

Также в таблицу записываються несколько связанных ивентов почти одновременно, один зависит от другого, и множество полей у них совпадают, и на каждый нужно искать в базе по click_id
Для этого проекции поставить click_id - и далее по мере увеличения cardinality - то есть некое количество всех совпадающих колонок
Есть в этом смысл?

4 ответов

14 просмотров

много колонок в ключе сортировки обычно ничего не дают, особенно если в начале стоит что-то высококардинальное, типа timestamp или click_id. Если колонки низкокардиальные - можно 4-6 указать, дальше профита особо не будет. Если первая высококардинальная - вторая колонка уже ничего не даст

Антон- Автор вопроса

create table events () engine = MergeTree PARTITION BY toYYYYMM(toDateTime(time)) ORDER BY (time, sl_click_id, dci, device_id) SETTINGS index_granularity = 8192; Создана проекция PROJECTION events_event_id_pj ( SELECT * ORDER BY sl_click_id ) Задачу решило по поиску единичных записей Но появилась проблема, что теперь проекция ещё используется там где не нужно, а именно во всех запросах, где присутствует фильтрация не только по дефолтному primary key оригинальной таблицы То есть - минимальный кейс explain indexes=1 SElECT distinct e.aff_sub FROM events e WHERE (e.time >= ...) AND (e.time <= ...) Нормально юзает оригинальную таблицу и затрагивает мало гранул explain indexes=1 SElECT distinct e.aff_sub FROM events e WHERE (e.time >= ...) AND (e.time <= ...) AND "e"."event" = 'hit'; Уже использует новую проекцию, хотя под её ключ вообще не попадает, почти все гранулы В чем может быть проблема? Версия 23.6.2.18

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта