오라클 DB에서 Where절에 DECODE문 쓰면 Index 안타나요?
오라클 DB에서 Where절에 DECODE문 쓰면 Index 안타나요?
DECODE문 쓰니까 PK Index도 안타는것 같아서요.
성능이 이슈가 되는데 이런 경우 어떻게 해결할 수 있을까요?
55글자 더 채워주세요.
1개의 답변이 있어요!
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_도 같이 업데이트 해야 정합성이 깨지지 않습니다.