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

Добрый день! подскажите пожалуйста, можно ли как-то оптимизировать такой запрос? SELECT

*
FROM (
SELECT
timestamp,
rid,
bs,
h,
count() OVER w AS cnt,
row_number() OVER w AS rn
FROM table
WHERE
timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59'
AND component != 'ec'
AND notEmpty(rid)
AND tt = 'u'
WINDOW w AS (PARTITION BY timestamp, rid, c, cr)
)
WHERE cnt > 1
Сейчас работает более-менее ок (жрёт 20 гб памяти), но при добавлении более тяжёлых колонок выжирает всю память.

7 ответов

32 просмотра
Ivan-Kalinin Автор вопроса

таблица отсортирована по timestamp, хочу найти дубликаты по timestamp, rid, c, cr

а чем вам обычный group by не угодил? SELECT timestamp, rid, c, cr, any(bs), any(h) FROM ( SELECT timestamp, rid, c, cr bs, h FROM table WHERE timestamp BETWEEN '2021-08-25 00:00:00' AND '2021-08-25 23:59:59' AND component != 'ec' AND notEmpty(rid) AND tt = 'u' ) group by timestamp, rid, c, cr WHERE count() > 1 Не очень понятно чего вы ожидаете от bs & h но если нужны все значения, то можно сделать groupArray/arrayJoin

Ivan-Kalinin Автор вопроса
Boris
а чем вам обычный group by не угодил? SELECT times...

в память не влезает практически моментально

set distributed_aggregation_memory_efficient=1 (default from 21.3) set max_bytes_before_external_group_by='40G' max_threads=1

Ivan-Kalinin Автор вопроса

пыщь

Ivan Kalinin
пыщь

А версия какая?

Ivan-Kalinin Автор вопроса

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

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

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