EXPLAIN PLAN 과 explain plan 보기 위한 토드 설정 

 

 

로컬에서 테스트 할 때,

 

1. 실행시킬 쿼리 위에서 드래그 하여 반전 시킨 후 Ctrl + e

2. 실행계획 보기 위한 설정이 되어 있지 않으면 아래 창이 뜸.

 

혹시 로컬에서 테스트 중이 아니고 개발장비에 연결된 상태라면 

수정해 줘야 함. 

테이블명, 테이블 스페이스, 테이블 오너(스키마) 다 수정해야 함.

수정한 후 토드로 와서 view > toad option > Oracle - general 에서 오른 쪽에 explain plan 부분에

테이블명, 테이블 오너(스키마) 를 개발장비에 맞는 이름으로 수정해 줘야 함.

(아마도 개발장비에는 각 유저들에게 

 

grant all on v_$sesstat to public ;

grant all on v_$statname to public ;

grant all on v_$session to public ;

다 되어 있을 것. 권한은 신경쓰지 않아도 될 것임)

 

 

로컬에서 하는 중이라면 그냥 ok 누른다.

 

아래 창이 뜰 것.

 

그냥  ok 누른다. 그럼 또 아래 창이 뜰 것.

 

아무것도 입력하지 말고 ok 누른다.

 

3. 로컬에서 테스트 중일경우 sys 로 로그인해서 

 

 

grant all on v_$sesstat to public ;

 

grant all on v_$statname to public ;

 

grant all on v_$session to public ;

 

해 줘야 함.

 

4. 이후 토드 재실행 하고 나서 sql 문 드래그로 반전시킨 후 Ctrl + e 누르면 실행계획 볼 수 있음.

 

*******************************************************************************

 

5. 아래는 http://www.gurubee.net/pages/viewpage.action?pageId=688200 에서 가져 온 것.

실행계획 보는 순서.

- 같은 레벨이라면 위에서 아래로 실행되었다는 것.

- 자신보다 하위레벨이 있으면 하위레벨이 먼저 실행되었다는 것.

 

 

1. EXPAIN PLAN 명령어는 옵티마이져가 SELECT, UPDATE, INSERT, DELETE을 실행하기 위해 선택한 실행계획을 보여준다. 
실행계획이란 옵티마이져가 특정 SQL문을 실행하기 위해 수행한 일련의 동작(OPERATIONS)을 트리형식으로 표현한 것이다.
EXPAIN PLAN의 결과는 사용자로 하여금 옵티마이져가 왜 특정 실행계획을 선택했는지를 이해할 수 있게 해주고 쿼리문의 성능을 판단하는데 
도움을 준다.

2. 실행계획은 다음과 같은 정보를 포함하고 있다.

1) 쿼리문이 참조한 테이블들의 순서
2) 쿼리문이 참조한 테이블들의 접근방법(ACESS PATH)
3) 조인에 의해 영향받는 테이블들의 조인방법(JOIN MEHTOD)
4) 데이터 조작방법(filter, sort, or aggregation,etc)

3. EXPLAIN PLAN 과 EXECUTION PLANS
EXPLAIN PLAN 의 결과와 EXECUTION PLANS는 서로 다를 수 있다. 서로 다른 데이터베이스를 참조하거나, 같은 데이터베이스의 서로 다른
OBJECTS를 참조하는 경우 차이가 발생한다. 설혹 같은 데이터베이스의 같은 OBJECT를 참조할지라도 다음과 같은 요인에 의해 달라질 수가 있다.

1) Data volume and statistics
2) Bind variable types and values
3) Initialization parameters - globally or session level

4. EXPLAIN PLAN는 사용자가 다음과 같은 피해야하는 항목들을 파악할 수 있게 해준다.

1) Full scans : 의도하지 않은 Full scans 
2) Unselective range scans : 100건을 조회하기 위해 백만건을 스캔하는 경우
3) Late predicate filters : ?
4) Wrong join order : 잘못된 조인순서는 처리범위를 증가시킨다.
5) Late filter operations : 필터로 버릴 것이 있다면 조인 전에 필터하는 것이 좋다.

5. EXPLAIN PLAN 의 제약사항

1) 바이드변수에 대해서는 정확한 실제계획을 보여주지 못한다.
2) 암묵적인 형변환에 대해서도 정확한 예측을 하지 못한다.

6. EXPLAIN PLAN을 파악하는데 도움이 되는 시스템 뷰

1) V$SQL_PLAN : PLAN_TABLE과 거의 유사하다. PLAN_TABLE보다 좋은 점은 특정 쿼리문이 실행되는데 사용되는 컴파일 환경을 알 필요가 
없다.EXPLAIN PLAN의 경우 같은 플랜을 얻으려면 똑같은 환경을 조성해 주어야 한다.
2) V$SQL_PLAN_STATISTICS : 출력 로우수,경과시간과 같은 통계자료를 제공한다. 출력 로우수를 제외한 모든 통계값은 누적값이다. 
이 뷰의 데이터를 참조하기 위해서는 초기화 파라미터인 STATISTICS_LEVEL 이 ALL로 설정되어 있어야 한다.
3) V$SQL_PLAN_STATISTICS_ALL : 출력 로우수나 경과시간과 같은 통계자료를 하나씩 비교하는데 편리하다. V$SQL_PLAN과 V$SQL_PLAN_STATISTICS를 합쳐놓은 것이다.

 

 

 

6. 아래는 http://www.oracleclub.com/lecture/1540 에서 가져 온 것.

 

 

 

 

 4.5.6. OPERATION and OPTIONS Values Produced by EXPLAIN PLAN

 

기 능 옵 션 설 명
AGGREGATE GROUP BY 그룹함수(sum, count 등)를 사용하여 한의 로우가 추출되도록 처리(7버전에서만 표시)
AND-EQUAL   인덱스 머지(Merge)를 이용하는 경우 주로나타난다. 복수개의 ROWID집합을 받아들일 때, 집합들간의 교집합을 반환할 때
,중복로우를 제거할 때 나타나는 OPERATION이다.
BITMAP

CONVERSION TO ROWIDS

 


CONVERSION FROM ROWIDS

 


CONVERSION COUNT

 

 


INDEX SINGLE VALUE

 


INDEX RANGE SCAN

 


INDEX FULL SCAN 

 


MERGE
 

MINUS
 

OR 
 

AND
 

KEY ITERATION

비트맵 표현식을 실제 ROWID로 변환한다.

 

 


ROWID를 비트맵 표현식으로 변환한다.
 

 

 

ROWID 갯수를 반환한다.
 

 

 

 

인덱스에서 싱클키에 대한 비트맵을 검색한다.
 

 

 

키값 범위에 맞는 비트맵을 검색한다.
 

 

 

비트맵을 풀스캔한다
 

 

 

범위스캔의 결과로 나온 복수개의 비트맵을 하나의 비트맵으로 합친다.
 

비트맵의 비트값을 빼는 연산을 한다. 부정형 조건이 기술된 경우 나타난다.
 

두개의 비트맵에 대해 OR연산을 한다.
 

두개의 비트맵에 대해 AND연산을 한다.
 

테이블에서 각각의 로우를 취해 비트맵 인덱스에서 대응되는 비트맵을 찾은 후 BITMAP MERGE 에 의해 하나의 비트맵으로 만든다

CONNECT BY   CONNECT BY 를 사용하여 트리(Tree)구조로전개
CONCATENATION   단위 액세스에서 추출한 로우들의 합집합을 생성
COUNTING   테이블의 로우스를 센다
FILTER   선택된 로우에 대해서 다른 집합에 대응되는 로우가 있다면 제거하는 작업
FIRST ROW   조회 로우 중에 첫번째 로우만 추출한다.
FOR UPDATE   선택된 로우에 LOCK을 지정한다.
INDEX

RANGE SCAN
 

RANGE SCAN DESCENDING
 

FULL SCAN


FULL SCAN DESCENDING
 

FAST FULL SCAN
 

SKIP SCAN

인덱스의 일정범위 ROWID를 오름차순 검색.
 

인덱스의 일정범위 ROWID를 내림차순 검색

 

 

인덱스에 있는 모든 ROWID를 오름차순 검색한다.
 

인덱스에 있는 모든 ROWID를 내림차순 검색한다.
 

 

멀티블럭 I/O를 통해 인덱스된 칼럼만을 대상으로 모든 ROWID 검색한다. CBO에서만 가능.
 

결합인덱스의 첫번째 칼럼의 값이 없을때 인덱스의 ROWID를 검색한다. 9i. CBO에서만 가능

INTERSECTION   교집합의 로우를 추출한다. (같은 값이 없다.)
MERGE JOIN

.
OUTER

 

 

 

ANTI
 

SEMI
 

CARTESIAN

두개의 집합이 각각 특정 값으로 정렬되어 있으며,한 집합의 로우는 매칭되는 다른 집합의 로우와 결합시킨 결과를 반환한다.
먼저 자신의 조건만으로 액세스한 후 각각을 SORT하여 머지(Merge)해 가는 조인 outer join을 한다.

 

머지안티조인
 

머지세미조인
 

조인조건 없는 머지조인

MINUS   MINUS 함수를 사용한다.
NESTED LOOPS OUTER 먼저 어떤 드라이빙(Driving) 테이블의 로우를 액세스한 후 그 결과를 이용해 다른 테이블을 연결하는 조인, outer join을 한다.
PROJECTION   내부적인 처리의 일종
REMOTE   다른 분산 데이터베이스에 있는 오브젝트를 추출하기 위해 DataBase Link를 사용하는 경우
SEQUENCE   Sequence 를 액세스한다.
SORT AGGREGATE
UNIQUE
GROUP BY
JOIN
ORDER BY
선택된 로우들을 그룹함수를 이용하여 하나의 로우로 만들때
결과집합 정렬하여 중복로우를 제거할 때
결과집합을 정렬하여 GROUP BY 절을 사용하여 그룹핑할 때
결과집합을 정렬하여 MERGE JOIN할 때
ORDER BY 를 위한 SORT
TABLE ACCESS
(물리뷰의 경우 
MAT_VIEW REWITE ACCESS 
로 나타난다)

FULL


SAMPLE


CLUSTER


HASH


BY ROWID RANGE


SAMPLE BY ROWID RANGE


BY USER ROWID


BY INDEX ROWID 


BY GLOBAL INDEX ROWID 


BY LOCAL INDEX ROWID

테이블의 모든 로우를 검색한다.

 

테이블에서 샘플로우만을 검색한다.
 

indexed cluster key 값에 근거하여 로우를 검색한다.
 

hash cluster key 값에 근거하여 로우를 검색한다.
 

ROWID 범위검색
 

 

ROWID 범위로 샘플데이터 검색
 

 

테이블의 로우가 사용자가 제공한 ROWID에 위치하고 있을 때 사용
 

 

파티션되지 않은 테이블에 인덱스를 이용하여 로우 검색
 

 

파티션된 테이블에서 글로벌인덱스를 이용하여 로우검색
 

 

파티션된 테이블에서 로컬인덱스를 이용하여 로우검색

UNION   두집합의 합집합을 구한다.(중복없음)
항상 전체범위처리를 한다.
UNION ALL   두집합의 합집합을 구한다.(중복없음)
UNION 과는 다르게 부분범위 처리를 한다.
VIEW   어떤 처리에 의해 생성되는 가상의 집합에서 추출한다.[주로 서브쿼리(Subquery)에 의해 수행된 결과]

 

 

 

 

 

4.5.5. PLAN_TABLE Columns

 

Column Type Description
STATEMENT_ID VARCHAR2(30) EXPLAIN PLAN 명령실행시 입력한 STATEMENT_ID 파라미터
PLAN_ID NUMBER 데이터베이스내에서 유일한 PLAN_TABLE 로우의 식별자(10G)
TIMESTAMP DATE EXPLAIN PLAN 이 생성된 날짜와 시간
REMARKS VARCHAR2(80) 사용자입력 코멘트
OPERATION VARCHAR2(30) INDEX/TABLE ACCESS (4.5.6 참조)
OPTIONS VARCHAR2(225) UNIQUE SCAN/BY INDEX ROWID (4.5.6 참조)
OBJECT_NODE VARCHAR2(128) 원격지의 객체를 참조하는 데이터베이스링크 이름. 병렬처리 로컬 쿼리의 경우는 출력의 순서를 의미
OBJECT_OWNER VARCHAR2(30) OBJECT를 담고 있는 스키마의 소유주 이름
OBJECT_NAME VARCHAR2(30) 객체이름(EX:TABLE,INDEX)
OBJECT_INSTANCE NUMERIC 본 쿼리문에 나열된 객체들을 좌에서 우,바깥에서 안쪽으로 순서를 부여한 번호
OBJECT_ALIAS VARCHAR2(65) 객체 별칭
OBJECT_TYPE VARCHAR2(30) 객체에 대한 설명적 정보 (EX:UNIQUE,NON-UNIQUE)
OPTIMIZER VARCHAR2(255) 옵티마이져 모드
TIME NUMBER(20,2) 옵티마이져에 의해 예상된 경과시간. RBO에서는 값이 없다.
ACCESS_PREDICATES VARCHAR2(4000) 엑세스 조건 (EX:"B"."DEPTNO"=10)
FILTER_PREDICATES VARCHAR2(4000) 체크조건 (EX:"A"."DEPTNO"=10)
TEMP_SPACE NUMERIC 옵티마이져가 예측한 임시사용공간(BYTE)
COST NUMERIC 옵티마이져가 예측한 실행비용. 비용은 테이블 엑세스 동작에만 한정된 것은 아니다. 이 칼럼의 값은 특별히 측정단위를 갖는 것은 아니다. 
실행계획의 비용을 비교하기 위해 사용되는 가중치를 갖을뿐이다. CPU_COST와 IO_COST의 값 계산에 역할을 한다.
CARDINALITY NUMERIC 옵티마이져가 예측한 엑세스될 로우 수
BYTES NUMERIC 옵티마이져가 예측한 엑세스될 바이트 수
IO_COST NUMERIC 옵티마이져가 예측한 IO COST. 읽혀진 데이터블럭 수의 비례치이다. RBO에서는 NULL이다.
CPU_COST NUMERIC 옵티마이져가 예측한 CPU COST. 읽혀진 SYSTEM CYCLES 수의 비례치이다. RBO에서는 NULL이다.


[출처] https://blog.naver.com/acatholic/9014889825

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

EXPLAIN PLAN 과 explain plan 보기 위한 토드 설정 

 

로컬에서 테스트 할 때,

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

1. 실행시킬 쿼리 위에서 드래그 하여 반전 시킨 후 Ctrl + e

2. 실행계획 보기 위한 설정이 되어 있지 않으면 아래 창이 뜸.

 

혹시 로컬에서 테스트 중이 아니고 개발장비에 연결된 상태라면 

수정해 줘야 함. 

테이블명, 테이블 스페이스, 테이블 오너(스키마) 다 수정해야 함.

수정한 후 토드로 와서 view > toad option > Oracle - general 에서 오른 쪽에 explain plan 부분에

테이블명, 테이블 오너(스키마) 를 개발장비에 맞는 이름으로 수정해 줘야 함.

(아마도 개발장비에는 각 유저들에게 

 

grant all on v_$sesstat to public ;

grant all on v_$statname to public ;

grant all on v_$session to public ;

다 되어 있을 것. 권한은 신경쓰지 않아도 될 것임)

 

 

로컬에서 하는 중이라면 그냥 ok 누른다.

 

아래 창이 뜰 것.

 

그냥  ok 누른다. 그럼 또 아래 창이 뜰 것.

 

아무것도 입력하지 말고 ok 누른다.

 

3. 로컬에서 테스트 중일경우 sys 로 로그인해서 

 

 

grant all on v_$sesstat to public ;

 

grant all on v_$statname to public ;

 

grant all on v_$session to public ;

 

해 줘야 함.

 

4. 이후 토드 재실행 하고 나서 sql 문 드래그로 반전시킨 후 Ctrl + e 누르면 실행계획 볼 수 있음.

 

*******************************************************************************

 

5. 아래는 http://www.gurubee.net/pages/viewpage.action?pageId=688200 에서 가져 온 것.

실행계획 보는 순서.

- 같은 레벨이라면 위에서 아래로 실행되었다는 것.

- 자신보다 하위레벨이 있으면 하위레벨이 먼저 실행되었다는 것.

 

 

1. EXPAIN PLAN 명령어는 옵티마이져가 SELECT, UPDATE, INSERT, DELETE을 실행하기 위해 선택한 실행계획을 보여준다. 
실행계획이란 옵티마이져가 특정 SQL문을 실행하기 위해 수행한 일련의 동작(OPERATIONS)을 트리형식으로 표현한 것이다.
EXPAIN PLAN의 결과는 사용자로 하여금 옵티마이져가 왜 특정 실행계획을 선택했는지를 이해할 수 있게 해주고 쿼리문의 성능을 판단하는데 
도움을 준다.

2. 실행계획은 다음과 같은 정보를 포함하고 있다.

1) 쿼리문이 참조한 테이블들의 순서
2) 쿼리문이 참조한 테이블들의 접근방법(ACESS PATH)
3) 조인에 의해 영향받는 테이블들의 조인방법(JOIN MEHTOD)
4) 데이터 조작방법(filter, sort, or aggregation,etc)

3. EXPLAIN PLAN 과 EXECUTION PLANS
EXPLAIN PLAN 의 결과와 EXECUTION PLANS는 서로 다를 수 있다. 서로 다른 데이터베이스를 참조하거나, 같은 데이터베이스의 서로 다른
OBJECTS를 참조하는 경우 차이가 발생한다. 설혹 같은 데이터베이스의 같은 OBJECT를 참조할지라도 다음과 같은 요인에 의해 달라질 수가 있다.

1) Data volume and statistics
2) Bind variable types and values
3) Initialization parameters - globally or session level

4. EXPLAIN PLAN는 사용자가 다음과 같은 피해야하는 항목들을 파악할 수 있게 해준다.

1) Full scans : 의도하지 않은 Full scans 
2) Unselective range scans : 100건을 조회하기 위해 백만건을 스캔하는 경우
3) Late predicate filters : ?
4) Wrong join order : 잘못된 조인순서는 처리범위를 증가시킨다.
5) Late filter operations : 필터로 버릴 것이 있다면 조인 전에 필터하는 것이 좋다.

5. EXPLAIN PLAN 의 제약사항

1) 바이드변수에 대해서는 정확한 실제계획을 보여주지 못한다.
2) 암묵적인 형변환에 대해서도 정확한 예측을 하지 못한다.

6. EXPLAIN PLAN을 파악하는데 도움이 되는 시스템 뷰

1) V$SQL_PLAN : PLAN_TABLE과 거의 유사하다. PLAN_TABLE보다 좋은 점은 특정 쿼리문이 실행되는데 사용되는 컴파일 환경을 알 필요가 
없다.EXPLAIN PLAN의 경우 같은 플랜을 얻으려면 똑같은 환경을 조성해 주어야 한다.
2) V$SQL_PLAN_STATISTICS : 출력 로우수,경과시간과 같은 통계자료를 제공한다. 출력 로우수를 제외한 모든 통계값은 누적값이다. 
이 뷰의 데이터를 참조하기 위해서는 초기화 파라미터인 STATISTICS_LEVEL 이 ALL로 설정되어 있어야 한다.
3) V$SQL_PLAN_STATISTICS_ALL : 출력 로우수나 경과시간과 같은 통계자료를 하나씩 비교하는데 편리하다. V$SQL_PLAN과 V$SQL_PLAN_STATISTICS를 합쳐놓은 것이다.

 

 

 

6. 아래는 http://www.oracleclub.com/lecture/1540 에서 가져 온 것.

 

 

 

 

 4.5.6. OPERATION and OPTIONS Values Produced by EXPLAIN PLAN

기 능 옵 션 설 명
AGGREGATE GROUP BY 그룹함수(sum, count 등)를 사용하여 한의 로우가 추출되도록 처리(7버전에서만 표시)
AND-EQUAL   인덱스 머지(Merge)를 이용하는 경우 주로나타난다. 복수개의 ROWID집합을 받아들일 때, 집합들간의 교집합을 반환할 때
,중복로우를 제거할 때 나타나는 OPERATION이다.
BITMAP

CONVERSION TO ROWIDS

 


CONVERSION FROM ROWIDS

 


CONVERSION COUNT

 

 


INDEX SINGLE VALUE

 


INDEX RANGE SCAN

 


INDEX FULL SCAN 

 


MERGE
 

MINUS
 

OR 
 

AND
 

KEY ITERATION

비트맵 표현식을 실제 ROWID로 변환한다.

 

 


ROWID를 비트맵 표현식으로 변환한다.
 

 

 

ROWID 갯수를 반환한다.
 

 

 

 

인덱스에서 싱클키에 대한 비트맵을 검색한다.
 

 

 

키값 범위에 맞는 비트맵을 검색한다.
 

 

 

비트맵을 풀스캔한다
 

 

 

범위스캔의 결과로 나온 복수개의 비트맵을 하나의 비트맵으로 합친다.
 

비트맵의 비트값을 빼는 연산을 한다. 부정형 조건이 기술된 경우 나타난다.
 

두개의 비트맵에 대해 OR연산을 한다.
 

두개의 비트맵에 대해 AND연산을 한다.
 

테이블에서 각각의 로우를 취해 비트맵 인덱스에서 대응되는 비트맵을 찾은 후 BITMAP MERGE 에 의해 하나의 비트맵으로 만든다

CONNECT BY   CONNECT BY 를 사용하여 트리(Tree)구조로전개
CONCATENATION   단위 액세스에서 추출한 로우들의 합집합을 생성
COUNTING   테이블의 로우스를 센다
FILTER   선택된 로우에 대해서 다른 집합에 대응되는 로우가 있다면 제거하는 작업
FIRST ROW   조회 로우 중에 첫번째 로우만 추출한다.
FOR UPDATE   선택된 로우에 LOCK을 지정한다.
INDEX

RANGE SCAN
 

RANGE SCAN DESCENDING
 

FULL SCAN


FULL SCAN DESCENDING
 

FAST FULL SCAN
 

SKIP SCAN

인덱스의 일정범위 ROWID를 오름차순 검색.
 

인덱스의 일정범위 ROWID를 내림차순 검색

 

 

인덱스에 있는 모든 ROWID를 오름차순 검색한다.
 

인덱스에 있는 모든 ROWID를 내림차순 검색한다.
 

 

멀티블럭 I/O를 통해 인덱스된 칼럼만을 대상으로 모든 ROWID 검색한다. CBO에서만 가능.
 

결합인덱스의 첫번째 칼럼의 값이 없을때 인덱스의 ROWID를 검색한다. 9i. CBO에서만 가능

INTERSECTION   교집합의 로우를 추출한다. (같은 값이 없다.)
MERGE JOIN

.
OUTER

 

 

 

ANTI
 

SEMI
 

CARTESIAN

두개의 집합이 각각 특정 값으로 정렬되어 있으며,한 집합의 로우는 매칭되는 다른 집합의 로우와 결합시킨 결과를 반환한다.
먼저 자신의 조건만으로 액세스한 후 각각을 SORT하여 머지(Merge)해 가는 조인 outer join을 한다.

 

머지안티조인
 

머지세미조인
 

조인조건 없는 머지조인

MINUS   MINUS 함수를 사용한다.
NESTED LOOPS OUTER 먼저 어떤 드라이빙(Driving) 테이블의 로우를 액세스한 후 그 결과를 이용해 다른 테이블을 연결하는 조인, outer join을 한다.
PROJECTION   내부적인 처리의 일종
REMOTE   다른 분산 데이터베이스에 있는 오브젝트를 추출하기 위해 DataBase Link를 사용하는 경우
SEQUENCE   Sequence 를 액세스한다.
SORT AGGREGATE
UNIQUE
GROUP BY
JOIN
ORDER BY
선택된 로우들을 그룹함수를 이용하여 하나의 로우로 만들때
결과집합 정렬하여 중복로우를 제거할 때
결과집합을 정렬하여 GROUP BY 절을 사용하여 그룹핑할 때
결과집합을 정렬하여 MERGE JOIN할 때
ORDER BY 를 위한 SORT
TABLE ACCESS
(물리뷰의 경우 
MAT_VIEW REWITE ACCESS 
로 나타난다)

FULL


SAMPLE


CLUSTER


HASH


BY ROWID RANGE


SAMPLE BY ROWID RANGE


BY USER ROWID


BY INDEX ROWID 


BY GLOBAL INDEX ROWID 


BY LOCAL INDEX ROWID

테이블의 모든 로우를 검색한다.

 

테이블에서 샘플로우만을 검색한다.
 

indexed cluster key 값에 근거하여 로우를 검색한다.
 

hash cluster key 값에 근거하여 로우를 검색한다.
 

ROWID 범위검색
 

 

ROWID 범위로 샘플데이터 검색
 

 

테이블의 로우가 사용자가 제공한 ROWID에 위치하고 있을 때 사용
 

 

파티션되지 않은 테이블에 인덱스를 이용하여 로우 검색
 

 

파티션된 테이블에서 글로벌인덱스를 이용하여 로우검색
 

 

파티션된 테이블에서 로컬인덱스를 이용하여 로우검색

UNION   두집합의 합집합을 구한다.(중복없음)
항상 전체범위처리를 한다.
UNION ALL   두집합의 합집합을 구한다.(중복없음)
UNION 과는 다르게 부분범위 처리를 한다.
VIEW   어떤 처리에 의해 생성되는 가상의 집합에서 추출한다.[주로 서브쿼리(Subquery)에 의해 수행된 결과]

 

 

 

 

 

4.5.5. PLAN_TABLE Columns

Column Type Description
STATEMENT_ID VARCHAR2(30) EXPLAIN PLAN 명령실행시 입력한 STATEMENT_ID 파라미터
PLAN_ID NUMBER 데이터베이스내에서 유일한 PLAN_TABLE 로우의 식별자(10G)
TIMESTAMP DATE EXPLAIN PLAN 이 생성된 날짜와 시간
REMARKS VARCHAR2(80) 사용자입력 코멘트
OPERATION VARCHAR2(30) INDEX/TABLE ACCESS (4.5.6 참조)
OPTIONS VARCHAR2(225) UNIQUE SCAN/BY INDEX ROWID (4.5.6 참조)
OBJECT_NODE VARCHAR2(128) 원격지의 객체를 참조하는 데이터베이스링크 이름. 병렬처리 로컬 쿼리의 경우는 출력의 순서를 의미
OBJECT_OWNER VARCHAR2(30) OBJECT를 담고 있는 스키마의 소유주 이름
OBJECT_NAME VARCHAR2(30) 객체이름(EX:TABLE,INDEX)
OBJECT_INSTANCE NUMERIC 본 쿼리문에 나열된 객체들을 좌에서 우,바깥에서 안쪽으로 순서를 부여한 번호
OBJECT_ALIAS VARCHAR2(65) 객체 별칭
OBJECT_TYPE VARCHAR2(30) 객체에 대한 설명적 정보 (EX:UNIQUE,NON-UNIQUE)
OPTIMIZER VARCHAR2(255) 옵티마이져 모드
TIME NUMBER(20,2) 옵티마이져에 의해 예상된 경과시간. RBO에서는 값이 없다.
ACCESS_PREDICATES VARCHAR2(4000) 엑세스 조건 (EX:"B"."DEPTNO"=10)
FILTER_PREDICATES VARCHAR2(4000) 체크조건 (EX:"A"."DEPTNO"=10)
TEMP_SPACE NUMERIC 옵티마이져가 예측한 임시사용공간(BYTE)
COST NUMERIC 옵티마이져가 예측한 실행비용. 비용은 테이블 엑세스 동작에만 한정된 것은 아니다. 이 칼럼의 값은 특별히 측정단위를 갖는 것은 아니다. 
실행계획의 비용을 비교하기 위해 사용되는 가중치를 갖을뿐이다. CPU_COST와 IO_COST의 값 계산에 역할을 한다.
CARDINALITY NUMERIC 옵티마이져가 예측한 엑세스될 로우 수
BYTES NUMERIC 옵티마이져가 예측한 엑세스될 바이트 수
IO_COST NUMERIC 옵티마이져가 예측한 IO COST. 읽혀진 데이터블럭 수의 비례치이다. RBO에서는 NULL이다.
CPU_COST NUMERIC 옵티마이져가 예측한 CPU COST. 읽혀진 SYSTEM CYCLES 수의 비례치이다. RBO에서는 NULL이다.

 

 

 

 


[출처] https://blog.naver.com/acatholic/90148898258

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86178
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78666
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95398
744 [데이터수집4] 오픈 API 데이터 수집 (소셜미디어 데이터 수집) file 졸리운_곰 2020.06.12 1951
743 [데이터수집3] 관계형 데이터베이스 데이터 수집 file 졸리운_곰 2020.06.12 1317
742 [데이터수집2] 분산시스템 로그 수집 (빅데이터 수집) file 졸리운_곰 2020.06.12 1492
741 [데이터수집1] 웹 크롤링, 웹 스크래핑 file 졸리운_곰 2020.06.12 1804
» EXPLAIN PLAN 과 explain plan 보기 위한 토드 설정 file 졸리운_곰 2020.06.12 1177
739 PIVOT 쿼리 - 가로세로변환, ROW 단위 자료를 COLUMN 단위 자료로 변환1(개념) file 졸리운_곰 2020.06.12 1838
738 PIVOT 쿼리 - 가로세로변환, ROW 단위 자료를 COLUMN 단위 자료로 변환2(예제2) file 졸리운_곰 2020.06.12 1329
737 PIVOT 쿼리 - 가로세로변환, ROW 단위 자료를 COLUMN 단위 자료로 변환2(예제1) file 졸리운_곰 2020.06.12 1346
736 UNPIVOT 쿼리 - 가로세로변환, COLUMN 단위 자료를 ROW 단위 자료로 변환1 file 졸리운_곰 2020.06.12 1462
735 column을 row로 row를 column으로 변환 졸리운_곰 2020.06.12 1527
734 DCGAN in Tensorflow [적대적 신경망] file 졸리운_곰 2020.06.07 1303
733 char-rnn char-rnn-tensorflow-master [한글] [korean] file 졸리운_곰 2020.06.07 1011
732 This Repository is Reinforcement Learning Agent FrameWork file 졸리운_곰 2020.06.07 1354
731 anaconda에서 가상환경 삭제하기 졸리운_곰 2020.06.06 1346
730 Tensorflow 1.4 개발 환경 설치(Windows 10, CUDA 8.0, cuDNN v6.0, GPU 버전) file 졸리운_곰 2020.06.06 1054
729 [Tensorflow] Tensorflow GPU 버전 설치하기 file 졸리운_곰 2020.06.06 2301
728 DBeaver 설치 및 실행 (Window10) file 졸리운_곰 2020.05.26 1739
727 Group By 최대값을 가진 Row를 추출하는 쿼리 졸리운_곰 2020.05.20 1539
726 [오라클|Oracle] String 원하는 만큼 자르기 – SUBSTR 졸리운_곰 2020.05.20 1104
725 [오라클/함수] 문자열 길이 구하기 LENGTH 함수 file 졸리운_곰 2020.05.20 1508
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED