-- [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
복사



