* 인덱스를 타지 않는 SQL
1. 인덱스 컬럼 절의 변형
2. 내부적인 데이터
변환
3. NULL 조건의 사용
4. 부정형 조건의 사용
5. LIKE 연산자 사용
6. 최적기가 판단
1
- 인덱스 컬럼 절의 변형
SQL> select ename from emp where sal *
2.1 > 950 --인덱스 사용불가
SQL> select ename from emp where sal >
950 /2.1 --인덱스 사용가능
SQL> select ename from emp where
to_char(hiredate,'DDMMYY') = '250884' --인덱스 사용불가
SQL> select ename
from emp where hiredate = to_date('250884','DDMMYY') --인덱스 사용가능
->
인덱스 컬럼에 변형을 가하면은 사용할수 없습니다. 단 변형 가능하더라도 쓰고 싶다면은
말리지는 않겠지만 create
index .... on emp to_char(hiredate,'DDMMYY') 이렇게 하시면 됩니다.
2
- 내부적인 데이터 변환
SQL> select * from emp where hiredate
='14-JAN-85' --인덱스 사용불가
SQL> select * from emp hiredate =
to_date('71-10-22','YY/DD/DD') --인덱스 사용가능
SQL> select * from emp
where empno = '7936' --인덱스 사용불가
SQL> select * from emp where empno
= to_number('7936') --인덱스 사용가능
-> 내부적인 데이터변환에서 가장 많이 실수하는 부분은
문자값 데이터타입을 갖는 컬럼에
'값' -> 값 이렇게 하시는분이 많습니다. 딱맞는 데이터타입을 주세요 ^_^
3
- NULL 조건의 사용
SQL> select ename from emp where comm is
null --인덱스 사용불가
SQL> select ename from emp where comm is not null
--인덱스 사용불가
SQL> select ename from emp where ename > '' --인덱스
사용가능
SQL> select ename from emp where comm >= 0 --인덱스 사용가능
->
NULL조건으로 검색한다는 가정하에는 거의 인덱스 풀 스캔이 일어나겠죠. 적절히 사용합씨다.
4
- 부정형 조건의 사용
SQL> select ename from emp where deptno !=
30 --인덱스 사용불가
SQL> select ename from emp where deptno < 30 and
deptno > 30 --인덱스 사용가능
-> 논리적으로 부정형을 이용하여 인덱스를 사용하겠다는것은 말이
안되죠...
이 쿼리문도 적절히 사용합씨다.
5 - Like
연산자 사용
SQL> select * from emp where ename like 'S%' --인덱스
사용가능
SQL> select * from emp where ename like '%S%' --인덱스 사용불가
->
%S% 부분을 꼭 쓰고싶다면은 이렇게 하세요 앞에부분을 다 넣는거죠. AS%, BS%...
요즘 홈피를 보면 본문
찾기는 거의 없어져가고 있죠. 엔코아 경우 주제어를 검색을..
6 - 최적기가
판단
-> RBO경우 무조건 타죠 있으면은 이눔은 워낙 법을 좋아해서리..CBO는 통계값을
기준으로
하기 때문에 DBA가 잘 해야겠죠. 그럼 우리가 판단하게 할라면은 HINT를 써서 이눔들을
인도해야죠... 오늘도 전도를 ^____^
마지막으로 인덱스를 이용한 sort 회피 방법에 대해서
알아보겠습니다.
SQL> select empno, ename, job, comm from emp order by
empno --sort 정렬
SQL> select empno, ename, job, comm from emp where
empno >= 0 --sort 정렬제거
-> 인덱스는 값이 정렬되어 들어가있는 구조이기 때문에 처음부터
작은값 맨 끝값은
최대값이 있겠죠. 잘 사용하면 최고의 튜닝이 되겠죠.
by 시크리트
'ORACLE > TUNING' 카테고리의 다른 글
[Oracle] 부정형(NOT IN, <>, NOT EXISTS ...)의 비교 (0) | 2015.04.25 |
---|---|
DBMS_XPLAN.DISPLAY_CURSOR 결과 보는 법 (0) | 2013.06.23 |
Sort Area 크기 조정 (0) | 2012.09.07 |
SORT와 PGA_AGGREGATE_TARGET (0) | 2012.09.06 |
PGA(Program Global Area) 관리 (0) | 2012.09.06 |