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

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

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

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

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

4 ответов

19 просмотров

много колонок в ключе сортировки обычно ничего не дают, особенно если в начале стоит что-то высококардинальное, типа 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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта