728x90
반응형
. 조건 칼럼에 연산이 필요한 경우는 칼럼을 변형시키는 연산 대신에 비교되는 상수 값을변형시키는 방법을 찾아야 한다. 컬럼을 변형시킬경우 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 > 'MF728x90
반응형
'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 |