Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запроса / 4 сообщений из 4, страница 1 из 1
16.06.2021, 23:01
    #40078105
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запроса
Добрый вечер.
Помогите оптимизировать запрос, очень долго выполняется:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
	dn.warehouseid,
	dn.lotid,
	dn.docitemdate,
	COALESCE((SELECT SUM(dn2.docitemtype * dn2.quantity) FROM cte_distributions dn2 WHERE dn2.docitemdate < dn.docitemdate and dn2.lotid = dn.lotid), 0) AS qntbeg,
	COALESCE((SELECT SUM(dn2.docitemtype * dn2.quantity) FROM cte_distributions dn2 WHERE dn2.docitemdate <= dn.docitemdate and dn2.lotid = dn.lotid), 0) AS qntend
FROM cte_distributions dn
GROUP BY dn.warehouseid, dn.lotid, dn.docitemdate
...
Рейтинг: 0 / 0
17.06.2021, 00:09
    #40078122
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запроса
sa13m,

Так план покажите для начала с временами выполнения.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
17.06.2021, 09:47
    #40078166
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запроса
sa13m,

пример данных было бы не плохо ...
но, "в первом приближении", как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT distinct /* ?? */
	dn.warehouseid,
	dn.lotid,
	dn.docitemdate,
	SUM(dn.docitemtype * dn.quantity)over(partition by lotid order by docitemdate)
            -sum(dn.docitemtype * dn.quantity)over(partition by lotid, docitemdate) as qntbeg,
	SUM(dn.docitemtype * dn.quantity)over(partition by lotid order by docitemdate) AS qntend
FROM cte_distributions dn
...
Рейтинг: 0 / 0
18.06.2021, 13:19
    #40078568
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с оптимизацией запроса
court
sa13m,

пример данных было бы не плохо ...
но, "в первом приближении", как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT distinct /* ?? */
	dn.warehouseid,
	dn.lotid,
	dn.docitemdate,
	SUM(dn.docitemtype * dn.quantity)over(partition by lotid order by docitemdate)
            -sum(dn.docitemtype * dn.quantity)over(partition by lotid, docitemdate) as qntbeg,
	SUM(dn.docitemtype * dn.quantity)over(partition by lotid order by docitemdate) AS qntend
FROM cte_distributions dn



Спасибо, то что надо!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запроса / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]