매번 실행계획을 생성할 게 아니라 매번 실행계획을 다시 안 만들게 해야겠지요.
조건이 변경된다는 게 파라메터가 바뀐다는 것인지 조건절 구문이 바뀐다는 것인지요?
파라메터가 바뀌는 거라면 바인드변수로 파라메터 받아서 쿼리실행하셔야 하고요.
조건절 구문이 바뀌는 거라면 최대한 파라메터에 따라 고정 쿼리로 실행되게 하시고
불가하시다면 적당히 다이나믹 쿼리로 몇가지로 분기되게 처리되게 해놓으시면 됩니다.
쿼리가 4종류로 분기된다면 4번은 느리겠지만 이후에 실행속도는 계속 유지될 겁니다.
쿼리가 변경되거나, 오래 실행되지 않아 캐시에서 빠지기 전까지는요.