위에 작성하신 방법이 명확하긴 합니다만.
간결함을 원한다면? 요렇게만 해도 동일한 결과가 됩니다.
WHERE (@A IS NULL OR A = @A)
성능을 원한다면?
여러 방법 시도해 보시면서 실행게획 및 수행시간 비교해보세요.
조건이 있을 때와 없을 때로 나누어 실행이 되어야 최선이 됩니다.
조건이 있을 경우 인덱스 스캔, 없을 경우 풀스캔
최선의 실행계획이 수립되는지 실제 확인이 필요합니다.
원하는 대로 되지 않는다면?
UNION ALL 로 쿼리를 분리하는 방법이 있습니다.
인덱스가 없다면 그냥 간결한게 좋을 듯 하네요.
1 2 3 4 5 6 7 8 | SELECT * FROM BB WITH (NOLOCK) WHERE ( @A IS NULL ) UNION ALL SELECT * FROM BB WITH (NOLOCK) WHERE ( @A IS NOT NULL AND A = @A) ; |