아하
생활
싹싹한솔개174
싹싹한솔개174
19.07.23

오라클 DB에서 Where절에 DECODE문 쓰면 Index 안타나요?

오라클 DB에서 Where절에 DECODE문 쓰면 Index 안타나요?

DECODE문 쓰니까 PK Index도 안타는것 같아서요.

성능이 이슈가 되는데 이런 경우 어떻게 해결할 수 있을까요?

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 얄쌍한바다매186
    얄쌍한바다매186
    19.07.23

    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_도 같이 업데이트 해야 정합성이 깨지지 않습니다.