DECODE 결과를 따로 저장해두고 그 컬럼으로 SELECT하면 됩니다.
SELECT a, b, c FROM t WHERE DECODE(d, ...) = ...이런 쿼리가 있다면
DECODE(d, ...)를 예를 들어 d_라는 컬럼을 만들어서 저장한다면
SELECT a, b, c FROM t WHERE d_ = ...쿼리는 이런 식으로 쓰고
d_ 컬럼에 인덱스를 걸어준다면 d_ 컬럼의 인덱스를 탈 수 있겠죠
※ d를 업데이트 할 때 반드시 d_도 같이 업데이트 해야 정합성이 깨지지 않습니다.