powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запроса
4 сообщений из 4, страница 1 из 1
Помогите с оптимизацией запроса
    #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
Помогите с оптимизацией запроса
    #40078122
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sa13m,

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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Помогите с оптимизацией запроса
    #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
Помогите с оптимизацией запроса
    #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
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с оптимизацией запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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