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

Добрый день Есть таблица с данными 550-700мильён строк.А структура таблицы выглядит

так.
create table hits (
ad_id UInt64,
user_id UInt64,
created_at datetime,
event_id String,
event_type String,
source String,
category_id UInt64,
status String
) ENGINE = MergeTree order by (ad_id, created_at);

Запросы по ad_id быстро работает,
select toDate(created_at), event_type, count(*) from hits
where ad_id = 55622
group by toDate(created_at), event_type

а когда хочу использывать вместо ad_id, user_id или category_id очень медлит. Что советуете делать? Как могу оптимизировать запросы, что по другим колонкам тоже работало быстро как ad_id?

11 ответов

12 просмотров

Добавьте их в ORDER BY

Huseyn-Ahmadli Автор вопроса
Константин
Добавьте их в ORDER BY

хорошо попробую , а создать индекс , т.д. не требуется?

Huseyn Ahmadli
хорошо попробую , а создать индекс , т.д. не требу...

ORDER BY, это и так индекс прочтите https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/mergetree Чтобы изменить ORDER BY нужно будет пересоздать таблицу и данные в ней залить.

Huseyn-Ahmadli Автор вопроса
Константин
ORDER BY, это и так индекс прочтите https://click...

спасибо, сейчас попробую, еще заметил, что при поступлении новых данных они сразу пишутся не в очередь, а просто добавляются в конец, каждый раз нужно делать это вручную с командой OPTIMIZE TABLE или есть другой путь? 2 миллиона записей в день

Huseyn-Ahmadli Автор вопроса
Константин
Нет, кликхаус сам всё сделает.

Интересно вчера просто сделал ручной инсерт, но он попал в конец. Есть какой-то джоб который выполняется определенное время?

Huseyn Ahmadli
Интересно вчера просто сделал ручной инсерт, но он...

Он всегда будет попадать в конец, потом сам кликхаус вызывает "мержи" - система соединение разных файлов и пересортировки и многого другого ...

Huseyn-Ahmadli Автор вопроса
Константин
Добавьте их в ORDER BY

ORDER BY (ad_id,user_id,category_id, created_at) Сделал но не помог(( Есть другие предложение? 🙁

Huseyn Ahmadli
ORDER BY (ad_id,user_id,category_id, created_at) С...

что уникальней у вас ? user_id или category_id ?

Huseyn-Ahmadli Автор вопроса
Константин
что уникальней у вас ? user_id или category_id ?

В этой таблице мы планируем логировать просмотры по объявлениям.У объявления есть (ad_id, user_id и category_id). У объявления есть 1 владелец и 1 категория. А пользователя может быть несколько объявление который находится в нескольких категориях. Так как одному объявлению можно несколько раз посмотреть, ни одно из данных уникальным не будет. Несколько раз может попасть в таблицу.Ежедневно будет приниматься около 2 миллионов данных.

Huseyn-Ahmadli Автор вопроса
Константин
что уникальней у вас ? user_id или category_id ?

Если сортировать по user медленно работает запросы по номеру объявлению (ad_id) и наоборот. Сделать так что по двум параметрам тоже работало быстро не получается(

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

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

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
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта