Search

8-1-7. 무조건 작은 집합을 드라이빙 할 것인가?

-- [SQL-8-1-7-a] SELECT t1.mbr_id ,t1.nick_nm ,t2.ord_dtm ,t2.ord_amt FROM startdbpg.ms_mbr_big t1 INNER JOIN startdbpg.tr_ord_big t2 ON (t1.mbr_id = t2.mbr_id) WHERE t1.mbr_gd = 'PLAT' AND t2.ord_dtm >= '2023-01-01'::date AND t2.ord_dtm < '2025-01-01'::date;
SQL
복사
-- [SQL-8-1-7-b]: NestLoop 힌트를 추가하여 [SQL-8-1-7-a]를 실행 EXPLAIN (ANALYZE,COSTS OFF) SELECT /*+ NestLoop(t1 t2) */ t1.mbr_id ,t1.nick_nm ,t2.ord_dtm ,t2.ord_amt FROM startdbpg.ms_mbr_big t1 INNER JOIN startdbpg.tr_ord_big t2 ON (t1.mbr_id = t2.mbr_id) WHERE t1.mbr_gd = 'PLAT' AND t2.ord_dtm >= '2023-01-01'::date AND t2.ord_dtm < '2025-01-01'::date;
SQL
복사
-- [SQL-8-1-7-c]: [SQL-8-1-7-a]에 NestLoop와 NoMemoize 힌트를 추가 EXPLAIN (ANALYZE,COSTS OFF) SELECT /*+ NestLoop(t1 t2) NoMemoize(t1 t2) */ t1.mbr_id ,t1.nick_nm ,t2.ord_dtm ,t2.ord_amt FROM startdbpg.ms_mbr_big t1 INNER JOIN startdbpg.tr_ord_big t2 ON (t1.mbr_id = t2.mbr_id) WHERE t1.mbr_gd = 'PLAT' AND t2.ord_dtm >= '2023-01-01'::date AND t2.ord_dtm < '2025-01-01'::date;
SQL
복사