Мне нужно запросить таблицу заказов, чтобы получить количество всех заказов для вчерашних транзакций, сгруппированных по дате отгрузки.Затем мне нужно иметь дополнительный столбец, чтобы указать общее количество заказов на дату отгрузки для всех транзакций.Когда я добавил этот второй столбец, время обработки выросло экспоненциально (что и ожидалось) до 109 с.Есть ли способ улучшить этот SQL?Я просто хочу знать, упускаю ли я здесь что-нибудь фундаментальное.
SELECT t.shipping_date
, t.net_orders
, count(*) as total_orders
FROM (
SELECT s.store_num
, s.store_cd
, to_char(o.shipping_date, 'MM/DD/YYYY') as shipping_date
, COUNT (*) as net_orders
FROM order o left
join store s
on ( s.store_num = o.store_num )
WHERE TRUNC (o.order_date) = TRUNC (SYSDATE - 1)
AND s.store_cd = 'ZZZ'
AND o.status in ('A', 'B')
GROUP BY s.store_num
, s.store_cd
, to_char(shipping_date, 'MM/DD/YYYY')
) t
LEFT JOIN order o ON
( TRUNC (o.shipping_date) = to_date(t.shipping_date, 'MM/DD/YYYY')
and o.store_num = t.store_num )
WHERE o.status in ('A', 'B')
GROUP BY t.shipping_date, t.net_orders;
У меня есть индексы для всех этих столбцов в дополнение к следующим выражениям: TRUNC (order_date) и TRUNC (shipping_date).