yesterdays 트랜잭션의 모든 주문 수를 배송 날짜별로 그룹화하려면 orders 테이블을 쿼리해야합니다. 그런 다음 모든 거래에 대한 배송 날짜의 총 주문을 제공하는 추가 열이 있어야합니다. 이 두 번째 열을 추가하면 처리 시간이 기하 급수적으로 증가하여 109 초가되었습니다. 이 SQL을 향상시킬 수있는 방법이 있습니까? 여기서 근본적인 것이 빠졌는지 알고 싶을뿐입니다. TRUNC (ORDER_DATE)와 TRUNC (shipping_date) :Oracle Query Optimization Help - 다중 패스
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;
나는 다음과 같은 표현뿐만 아니라이 모든 컬럼에 인덱스를 가지고있다.
'shipping_date'및 'order_date'필드 (내부 쿼리)가있는 테이블을 명확히하십시오. – ThinkJet
귀하의 요청에 따라 위의 SQL을 편집했습니다. 감사. – Bradford