BAD
CASE로 선택 조건 처리
SELECT o.ord_no
,o.shop_id
,o.ord_dtm
FROM startdbpg.tr_ord_big o
WHERE 1 = 1
AND o.shop_id = CASE WHEN '' != COALESCE('S001','') THEN 'S001' ELSE o.shop_id END
AND o.ord_dtm >= '2024-01-01'
AND o.ord_dtm < '2024-02-01'
;
SQL
복사
실행계획 보기
SELECT o.ord_no
,o.shop_id
,o.ord_dtm
FROM startdbpg.tr_ord_big o
WHERE 1 = 1
AND o.shop_id LIKE COALESCE('S001','') || '%'
AND o.mbr_id LIKE COALESCE('','') || '%'
AND o.ord_dtm >= '2024-01-01'
AND o.ord_dtm < '2024-02-01'
;
SQL
복사
실행계획 보기
•
선택 조건을 CASE나 불필요한 LIKE로 감싸면 조건이 복잡해지고 상황에 맞는 인덱스 사용이 불가능해 질 수 있습니다.
GOOD: 5.850ms, hit=3047
조건값을 직접 비교
SELECT o.ord_no
,o.shop_id
,o.ord_dtm
FROM startdbpg.tr_ord_big o
WHERE 1 = 1
AND o.shop_id = 'S001'
AND o.ord_dtm >= '2024-01-01'
AND o.ord_dtm < '2024-02-01'
;
SQL
복사
실행계획 보기
•
입력값이 있는 조건만 동적으로 추가해 컬럼 = 값처럼 단순하고 명확한 검색 조건을 만듭니다.


