Search

7-4-3. Leading 힌트

-- [SQL-7-4-3-a] EXPLAIN (COSTS OFF) SELECT /*+ Leading(t1 t2 t3) */ * FROM startdbpg.ms_shop t1 INNER JOIN startdbpg.tr_ord t2 ON (t1.shop_id = t2.shop_id) INNER JOIN startdbpg.tr_ord_det t3 ON (t3.ord_no = t2.ord_no);
SQL
복사
-- [SQL-7-4-3-b]: [SQL-7-4-3-a]의 Leading 힌트만 변경 EXPLAIN (COSTS OFF) SELECT /*+ Leading(t2 t1 t3) */ * FROM startdbpg.ms_shop t1 INNER JOIN startdbpg.tr_ord t2 ON (t1.shop_id = t2.shop_id) INNER JOIN startdbpg.tr_ord_det t3 ON (t3.ord_no = t2.ord_no);
SQL
복사
-- [SQL-7-4-3-c] EXPLAIN (COSTS OFF) SELECT /*+ Leading((t1 t2)) NestLoop(t1 t2) */ * FROM startdbpg.ms_mbr t1 INNER JOIN startdbpg.tr_ord t2 ON (t1.mbr_id = t2.mbr_id);
SQL
복사
-- [SQL-7-4-3-d]: [SQL-7-4-3-c]의 Leading 힌트 괄호 중첩 제거 EXPLAIN (ANALYZE,COSTS OFF) SELECT /*+ Leading(t1 t2) NestLoop(t1 t2) */ * FROM startdbpg.ms_mbr t1 INNER JOIN startdbpg.tr_ord t2 ON (t1.mbr_id = t2.mbr_id);
SQL
복사
-- [SQL-7-4-3-e]: 힌트 해석이 복잡하도록 일부러 tr_ord를 b, tr_ord_det는 a로 테이블 별칭을 지정했다. SELECT * FROM startdbpg.tr_ord b LEFT OUTER JOIN startdbpg.tr_ord_det a ON (b.ord_no = a.ord_no AND a.ord_no = 1) WHERE b.ord_dtm >= '2023-01-01'::date AND b.ord_dtm < '2023-01-02'::date;
SQL
복사