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

Господа, выложу запрос на суд, может можно сделать его быстрее:

(цель запроса: запрос должен вернуть внутри времянного отрезка определенное количество записей содержащих временную метку и значение соответствующее этой временной метке)

SELECT five_min1, MAX
FROM
(SELECT time_bucket('1 minute', time) AS five_min1, MAX(value)
FROM ts  WHERE tag='1900' AND (time>'2021-12-20 00:00' AND time<'2021-12-20 12:00')
GROUP BY five_min1 ) as ts
INNER JOIN
(SELECT time_bucket('1 minutes', time) AS five_min
FROM (SELECT time FROM generate_series('2021-12-20 00:00'::timestamp,'2021-12-20 12:00', '77.28 second') as time) as q ) as q
ON ts.five_min1 = q.five_min

пояснение:
( период указанный (77.28 second) мне возвращает следующий запрос:
SELECT ((EXTRACT(EPOCH FROM timestamp '2021-12-20 12:00')) - (EXTRACT(EPOCH FROM timestamp '2021-12-20 00:00')))/559

559 это количество строк внутри двух меток времени(2021-12-20 00:00' ---- `2021-12-20 12:00',)которын необходимо чтобы вернул запрос


'ts' - это имя табицы в которой три поля : time - datestamp, value - numeric, tag - text.

интерено то что если я запрашиваю значения с tag= 1854 (это идентификатор параметра), ответ получаю через прмерно 7 секунд, если повторно выполняю запрос этот же ответ возвращается через ~500ms, если увеличиваю значенин tag незначительно то время выполнения почти не меняется ~500ms, если вмето 1854 запросить например 2100 тозапрос выполняется секунд 7 примерно (значений tag пишется в базу 700шт , начиная с номера 1717(1717-2416) частотой 1 раз в 5 секунд )

как ускорить выборку? 😭

7 ответов

12 просмотров

https://t.me/pgsql/303899

ᅠ ᅠUFO-ᅠ ᅠ Автор вопроса

1) версия psql 13.4 + timescaledb 2.4.2 2) SELECT five_min1, MAX FROM (SELECT time_bucket('1 minute', time) AS five_min1, MAX(value) FROM ts  WHERE tag='1900' AND (time>'2021-12-14 00:00' AND time<'2021-12-20 00:00') GROUP BY five_min1 ) as ts INNER JOIN (SELECT time_bucket('1 minutes', time) AS five_min FROM (SELECT time FROM generate_series('2021-12-14 00:00'::timestamp,'2021-12-20 00:00', '48.26 second') as time) as q ) as q ON ts.five_min1 = q.five_min 3)\d+ts отношения не найдены 4) pastebin.com/s9B41x2c

ᅠ ᅠUFO ᅠ ᅠ
1) версия psql 13.4 + timescaledb 2.4.2 2) SELE...

Если действительно хотите — покажите все 4 (четыре), и именно те, которые указаны в пунктах. Целиком, текстом. В сторону: я уже не знаю, как это простое предложение ещё написать, чтобы хотя бы прочитали. :(

ᅠ ᅠUFO-ᅠ ᅠ Автор вопроса
ᅠ ᅠUFO ᅠ ᅠ
86 строк возвращает explain(analyze, bufers)

> 3)\d+ts > отношения не найдены Не \d+ts, а \d+ ts (забыли пробел). > 86 строк возвращает explain И все их надо показать, целиком. И да, раз уж у Вас 13.4, покажите сразу результат EXPLAIN (ANALYZE, BUFFERS, VERBOSE, SETTINGS) SELECT ....

ᅠ ᅠUFO-ᅠ ᅠ Автор вопроса
Yaroslav Schekin
> 3)\d+ts > отношения не найдены Не \d+ts, а \d+...

спасибо понял, но текстом вствить лучше или фотогоафиями, потому что сами понимаете сложно в тексте будет тут увидеть чтото, да и размер сообщения не велик

ᅠ ᅠUFO ᅠ ᅠ
спасибо понял, но текстом вствить лучше или фотого...

"Фотографии" можете сразу выбросить, никто их тут смотреть не будет, я практически уверен. ;) Если что — есть же вложения (файлы) в telegram, paste sites, да и https://explain.depesz.com/ специально для демонстрации планов.

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

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

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
Карта сайта