토드에서 explain plan을 볼려면 아래의 스크립트를 실행 시킵니다.
C:\Program Files\Quest Software\TOAD\temps\toadprep.sql
toadprep.sql을 열어보면 toad유저를 생성할 때..
테이블스페이스를 지정하는데 데이타베이스에 존재하는 테이블 스페이스에 맞게 수정해야 합니다.
=============== 아래 부분은 제 오라클에 맞게 수정한 부분입니다. ===================
CREATE USER TOAD IDENTIFIED BY TOAD
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS
QUOTA 0K ON SYSTEM;
============================================================================
toadprep.sql스크립트가 에러없이 수행이 되면 오라클에 toad라는 유저가 생성되고...
toad_plan_table, toad_plan_sql 테이블이 생성이 됩니다.
또한 시퀀스, 시노님, 권한부여, 함수가 에러없이 생성이 되면 설치가 다 끝난겁니다.
실행계획을 보는 방법은 우선 SQL을 실행할 유저로 토드를 접속합니다..
그리고 나서 sql 을 실행하고 나면 토드 아래에 explain plan과 autotrace를 보면 됩니다.
아래의 그림은 제 피시에서 실행한 예 입니다..아래의 explain plan이 보이지 ?을 경우에는 토드 메뉴에서 view->explain plan을 선택하거나 아래 그림 맨 오른쪽 세번째 있는 엠브런스차 아이콘을 클릭하면 됩니다..
실행 계획을 보는 방법은 Operation 컬럼에 나온 내용과 아래의 표를 참고해서 보시면 됩니다.
그리고 Explain Plan 오른쪽에 Auto Trace를 보면 Trace정보가 나옵니다..
AutoTrace관련 몇 가지를 설명하면 아래와 같습니다.
db block gets : current gets에 대한 논리적인 IO횟수(in memory)
consistent gets : read-consistent gets에 대한 논리적인 IO횟수(in memory)
physical reads : Disk에서 읽은 블럭수
redo size : (DML)문에 의해 생성된 redo의 양
sorts(memory) : memory에서 수행된 sort횟수
sorts(disk) : Temporary 영역에서 sort된 횟수
☞ OPERATION의 종류와 OPTIONS에 대한 설명
OPERATION(기능)
| OPTIONS(옵션)
| 설 명
| AGGREGATE
| GROUP BY
| 그룹함수를 사용하여 하나의 로우가 추출되도록 하는 처리(버전 7에서만 표시됨)
| AND-EQUAL
|
| 인덱스 머지를 이용하는 경우
| CONNECT BY
|
| CONNECT BY를 사용하여 트리 구조로 전개
| CONCATENATION
|
| 단위 액세스에서 추출한 로우들의 합집합을 생성
| COUNTING
|
| 테이블의 로우스를 센다
| FILTER
|
| 선택된 로우에 대해서 다른 집합에 대응되는 로우가 있다면 제거하는 작업
| FIRST ROW
|
| 조회 로우 중에 첫번째 로우만 추출한다.
| FOR UPDATE
|
| 선택된 로우에 LOCK을 지정한다.
| INDEX
| UINQUE
RANGE SCAN
RANGE SCAN
DESCENDING
| UNIQUE인덱스를 사용한다. (단 한개의 로우 추출)
NON-UNIQUE한 인덱스를 사용한다.(한 개 이상의 로우)
RANGE SCAN하고 동일하지만 역순으로 로우를
추출한다.
| INTERSECTION
|
| 교집합의 로우를 추출한다.
| MERGE JOIN
|
OUTER
| 먼저 자신이ㅡ 조건만으로 액세스한 후 각각을 SORT하여
MERGE해 가는 조인
위와 동일한 방법이지만 outer join을 사용한다.
| MINUS
|
| MINUS 함수를 사용한다.
| NESTED LOOPS
|
OUTER
| 먼저 어떤 드라이빙 테이블의 로우를 액세스한 후 그 결과를
이용해 다른 테이블을 연결하는 조인
위와 동일하지만 outer join을 사용한다.
| PROJECTION
|
| 내부적인 처리의 일종
| REMOTE
|
| 다른 분산 데이터베이스에 있는 오브젝트를 추출하기 위해
DATABASE LINK를 사용하는 경우
| SEQUENCE
|
| 시퀀스를 액세스 한다.
| SORT
| UNIQUE
GROUP BY
JOIN
ORDER BY
| 같은 로우를 제거하기 위한 SORT
액세스 결과를 GROUP BY 하기 위한 SORT
MERGE JOIN을 하기 위한 SORT
ORDER BY를 위한 SORT
| TABLE ACCESS
| FULL
CLUSTER
HASH
BY ROWID
| 전체 테이블을 스캔한다.
CLUSTER를 액세스 한다.
키값에 대한 해쉬 알고리즘을 사용(버전 7에서만)
ROWID를 이용하여 테이블을 추출한다.
| UNION
|
| 두 집합의 합집합을 구한다.(중복없음)
항상 전체 범위 처리를 한다.
| UNION ALL
|
| 두 집합의 합집합을 구한다.(중복가능)
UNION과는 다르게 부분범위 처리를 한다.
| VIEW
|
| 어떤 처리에 의해 생성되는 가상의 집합에서 추출한다.(주로 서브쿼리에 의해 수행된 결과)
|
|