반응형

조건 칼럼에 연산이 필요한 경우는 칼럼을 변형시키는 연산 대신에 비교되는 상수 값을변형시키는 방법을 찾아야 한다. 컬럼을 변형시킬경우 Index가 존재해도 Full Scan을 하게된다.


SUBSTR(ENAME, 1,1) = '이'  -> ENAME LIKE '이%'

SAL * 12 > 30000000            -> SAL > 30000000 / 12

TO_CHAR(BIRTH,'YYYYMMDD') = '20020909'   -> BIRTH = TO_DATE('20020909','YYYYMMDD')


2. NULL은 인덱스에 들어가지 않기 때문에 인덱스를 스캔할 필요가 없다. 따라서 NULL 비교 조건을 상수 조건으로 변경해야한다. 


name is null ->  name > ''    (VARCHAR2)

age is null   ->  age > 0       (NUMBER)


3. NOT operator를 조건으로 사용한 경우는 부정형 조건을 긍정형으로 변경하면 인덱스 스캔을 할 수 있다.

position <> 'MF'     ->  position < 'MF' OR position > 'MF

728x90
반응형

'Development > DataBase' 카테고리의 다른 글

[Oracle]시퀀스 만들기  (0) 2013.02.12
SQL 문 수행단계  (0) 2013.02.12
[Oracle]계층구조 가져오기  (0) 2013.02.12
[SQL]REGEXP_SUBSTR  (0) 2011.12.20
[Oracle]세로 data를 가로로 변형하기 - LISTAGG  (0) 2011.11.08

+ Recent posts