Search

[권장:성능]선택 조건의 CASE·LIKE 처리

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
복사
실행계획 보기
•
입력값이 있는 조건만 동적으로 추가해 컬럼 = 값처럼 단순하고 명확한 검색 조건을 만듭니다.
💡

KEY POINT