-- [SQL-8-3-6-a]
SELECT t1.ord_no ,md5(t1.ord_no::text) as hash
FROM startdbpg.tr_ord_big t1
WHERE t1.ord_no BETWEEN 9 AND 12
ORDER BY t1.ord_no;
SQL
복사
-- [SQL-8-3-6-b]
EXPLAIN (ANALYZE, COSTS OFF)
SELECT /*+ Leading((t1 t3)) HashJoin(t1 t3) */
t1.ord_no ,t1.ord_dtm ,t1.ord_amt
,t3.item_id ,t3.prc_start_dt ,t3.prc_end_dt ,t3.sale_prc
FROM startdbpg.tr_ord_big t1
INNER JOIN startdbpg.ms_item_prc_hist t3
ON (t3.prc_start_dt <= t1.ord_dtm::date
AND t3.prc_end_dt >= t1.ord_dtm::date)
WHERE t1.ord_dtm >= '2023-01-01'::date
AND t1.ord_dtm < '2023-02-01'::date;
SQL
복사
-- [SQL-8-3-6-c]
EXPLAIN (ANALYZE,COSTS OFF)
SELECT t1.ord_no ,t1.ord_dtm ,t1.ord_amt
,t3.item_id ,t3.prc_start_dt ,t3.prc_end_dt ,t3.sale_prc
FROM startdbpg.tr_ord_big t1
INNER JOIN startdbpg.tr_ord_det_big t2 -- > 주문상세 조인 추가
ON (t2.ord_no = t1.ord_no) -- > 주문상세 조인 조건 추가
INNER JOIN startdbpg.ms_item_prc_hist t3
ON (t3.prc_start_dt <= t1.ord_dtm::date
AND t3.prc_end_dt >= t1.ord_dtm::date
AND t3.item_id = t2.item_id) -- > 상품ID 조인 조건 추가
WHERE t1.ord_dtm >= '2023-01-01'::date
AND t1.ord_dtm < '2023-02-01'::date;
SQL
복사
-- [SQL-8-3-6-d]: [SQL-8-3-6-c]의 성능을 개선하기 위해 힌트 적용
EXPLAIN (ANALYZE,COSTS OFF)
SELECT /*+ Leading(((t1 t2) t3)) NestLoop(t1 t2) HashJoin(t1 t2 t3) */
t1.ord_no ,t1.ord_dtm ,t1.ord_amt
,t3.item_id ,t3.prc_start_dt ,t3.prc_end_dt ,t3.sale_prc
FROM startdbpg.tr_ord_big t1
INNER JOIN startdbpg.tr_ord_det_big t2 -- > 주문상세 조인 추가
ON (t2.ord_no = t1.ord_no) -- > 주문상세 조인 조건 추가
INNER JOIN startdbpg.ms_item_prc_hist t3
ON (t3.prc_start_dt <= t1.ord_dtm::date
AND t3.prc_end_dt >= t1.ord_dtm::date
AND t3.item_id = t2.item_id) -- > 상품ID 조인 조건 추가
WHERE t1.ord_dtm >= '2023-01-01'::date
AND t1.ord_dtm < '2023-02-01'::date;
SQL
복사
