안녕하세요..
SELECT * FROM TABLE_A
WHERE 1=1
AND CASE @A WHEN 1 THEN 1 ELSE COL1 END = CASE @A WHEN 1 THEN 1 ELSE @A END
AND CASE @B WHEN 1 THEN 1 ELSE COL2 END = CASE @B WHEN 1 THEN 1 ELSE @B END
@A 와 @B 에 각각 1 의 값이 할당됐을경우..
이런 쿼리에서 WHERE 에서 CASE 문이 있을때와 없을때의 성능차이가 너무 많이 납니다..
제 생각에는 @A 와 @B 가 각각 1 이라면 1=1 AND 1=1 같은 조건이 나올거 같아 사용 했는데 좀 느리네요..
CASE 문 대신 1=1 AND 1=1 AND 1=1 을 쓰면 속도차이가 없습니다.
WHERE 절에서 CASE 문으로 동적 조건을 줄때 느려지는 이유가 뭘까요?