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

`Select a,b from test.table WHERE

pr_dttm > (select max(pr_dttm) from test.table2) limit 200`
запрос выполняется адово долго, как будто он каждый раз считает величину из подзапроса, при том что считать ее надо ровно один раз. Раньше считалось быстро - кто-нибудь знает, это лечится какой-то опцией?

24 ответов

20 просмотров
Vsevolod- Автор вопроса

То есть подзапрос не кэшируется а должен бы

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

а если where заменить на PREWHERE? select a,b from test.table PREWHERE pr_dttm > (select max(pr_dttm) from test.table2) limit 200

Vsevolod- Автор вопроса
Denny [Altinity]
а если where заменить на PREWHERE? select a,b from...

не помогает, а вот если туда конкретную дату вставить - все летает

Vsevolod
не помогает, а вот если туда конкретную дату встав...

интересно где это сломали, наверное кстати через with можно with (select max(pr_dttm) from test.table2) as x select a,b from test.table WHERE pr_dttm > x limit 200

Vsevolod
не помогло(

ОК, а сам подазпрос вообще насколько быстр? select max(pr_dttm) from test.table2

Vsevolod
не помогло(

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

Vsevolod
0.4 мс

для начала да вам надо обновится >мб обновится на самый последний 21.2

Vsevolod- Автор вопроса
Denny [Altinity]
для начала да вам надо обновится >мб обновится на...

Обновился, не помогло, подзапрос все ещё выполняется каждый раз

не воспроизводится create table t(a Int64, b Int64, p DateTime) Engine=MergeTree order by a; create table t2(a Int64, b Int64, p DateTime) Engine=MergeTree order by a; insert into t(a) select number from numbers(100000000); insert into t(a, p) select number, now() from numbers(1); insert into t2(a) select number from numbers(100000000); insert into t2(a, p) select number, now()-3600 from numbers(1); select a,b from t WHERE p > (select max(p) from t2) limit 200;

Vsevolod- Автор вопроса
Vsevolod
Обновился, не помогло, подзапрос все ещё выполняет...

кажется я понял, оптимизатор не понимает, по какой именно дате я ограничил запрос, и он фулсканит таблицу, что довольно фатально. Может есть какая опция?

Vsevolod
кажется я понял, оптимизатор не понимает, по какой...

может уже какие-нибудь примеры, хотя бы ddl ?

Vsevolod- Автор вопроса
Denny [Altinity]
может уже какие-нибудь примеры, хотя бы ddl ?

CREATE TABLE bmmm.debts ( StartedDateTime DateTime , FinishedDateTime DateTime COMMENT 'не заполняется', Network String , ID String , CreatedRec DateTime COMMENT 'дата создания записи ClickHouse', RowCreatedAt DateTime DEFAULT now(), INDEX IdxRowCreatedAt RowCreatedAt TYPE minmax GRANULARITY 1 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/bmmm/debts', '{replica}') PARTITION BY toYYYYMM(StartedDateTime) PRIMARY KEY StartedDateTime ORDER BY (StartedDateTime, Network, ID) SETTINGS index_granularity = 8192

Vsevolod
CREATE TABLE bmmm.debts ( StartedDateTime Date...

можно увидеть вывод set send_logs_level='debug' и потом запрос select .... fromat Null

Vsevolod- Автор вопроса
Denny [Altinity]
можно увидеть вывод set send_logs_level='debug' и...

это только в консоли можно сделать или в условном дбивере тоже?

Vsevolod
это только в консоли можно сделать или в условном ...

вот такой воркэраунд работает? select a,b from t WHERE p > toDateTime( (select max(p) from t2 ) ) limit 200; ?

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

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

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