1. NESTED LOOPS
Rows Execution Plan
------- -----------------------------------------------------
④ 7701 NESTED LOOPS
① 148946 TABLE ACCESS (FULL) OF 'ITEM_BASE'
③ 7719 TABLE ACCESS (BY INDEX ROWID) OF 'CS_SPEC'
② 7724 INDEX (UNIQUE SCAN) OF 'PK_CS_SPEC'
① 'ITEM_BASE'를 전체테이블 스캔으로 액세스한 로우 수는 148946건.
이중에서 조건절을 통과한 로우수는 7724건.
②에서 'PK_CS_SPEC'인덱스에 연결을 시도한 회수를 보고 알아낼수 있다.
② 선행 테이블의 조건을 통과한 7724건이 'CS_SPEC' 테이블의 기본키를 이용하여 연결을 시도
그중에서 5건을 실패 이것은 ③에 나타난 7719 라는 숫자를 보고 알수 있다.
그 이유는 인덱스를 성공적으로 액세스한 것만 테이블을 액세스하러 갔기 때문이다.
③ 기본키의 ROWID로 테이블을 액세스 하였다.
그런데 나중에 수행된 'CS_SPEC'테이블에도 체크조건이 있음을 짐작할 수 있다.
그 이유는 ④에 나타난 숫자인 7701을 보면 체크조건에 의해 18건이 걸러졌음을 짐작할 수 있다.
④ 조인의 최종 결과가 7701건임을 의미한다.
2. OUTER JOIN
Rows Execution Plan
------- -----------------------------------------------------
④ 280 NESTED LOOPS (OUTER)
② 74861 TABLE ACCESS (BY INDEX ROWID) OF 'BAL_ITEM'
① 210991 INDEX (RANGE SCAN) OF 'PK_BAL_ITEM' (UNIQUE)
③ 53200 TABLE ACCESS (FULL) OF 'TPF_INFO'
① 'BAL_ITEM' 테이블의 기본키를 범위처리로 스캔하면서 인덱스에 있는 ROWID로 테이블을 엑세스한다.
이렇게 스캔한것은 총 210991 건이지만 실제로 테이블을 액세스한 것은 74861건이다.
그 이유는 최소 두 개 이상의 컬럼에 조건이 부여되었지만 이들이 결합 인덱스로 구성된 기본키에서 연속된 순서를
가지고 있지 않다는 것을 나타낸다.
② 이 테이블을 액세스한 74861건 중에서 체크조건에 의해서 다시 걸러지고 남은건은 280건이다.
연결고리에 인덱스가 없기 때문에 연결대상마다 매번 전체테이블 스캔을 하였다.
이 조인은 아우터 조인이기 때문에 설사 연결에 실패했더라도 조인은 언제나 성공이므로 조인결과 집합인 280과 동일하다.
③ 이 테이블을 스캔한 로우수는 53200이지만 이테이블과의 연결을 시도한 횟수는 280이다.
즉, 테이블의 총 로우수는 190 (53200/280) 건이다.
④ 연결을 시도한 280건이 아우터 조인에 의해서 모두 성공하게 되므로 최종결과는 280건이다.
출처 : 새로쓴 대용량 데이터베이스 솔루션 vol.1
Rows Execution Plan
------- -----------------------------------------------------
④ 7701 NESTED LOOPS
① 148946 TABLE ACCESS (FULL) OF 'ITEM_BASE'
③ 7719 TABLE ACCESS (BY INDEX ROWID) OF 'CS_SPEC'
② 7724 INDEX (UNIQUE SCAN) OF 'PK_CS_SPEC'
① 'ITEM_BASE'를 전체테이블 스캔으로 액세스한 로우 수는 148946건.
이중에서 조건절을 통과한 로우수는 7724건.
②에서 'PK_CS_SPEC'인덱스에 연결을 시도한 회수를 보고 알아낼수 있다.
② 선행 테이블의 조건을 통과한 7724건이 'CS_SPEC' 테이블의 기본키를 이용하여 연결을 시도
그중에서 5건을 실패 이것은 ③에 나타난 7719 라는 숫자를 보고 알수 있다.
그 이유는 인덱스를 성공적으로 액세스한 것만 테이블을 액세스하러 갔기 때문이다.
③ 기본키의 ROWID로 테이블을 액세스 하였다.
그런데 나중에 수행된 'CS_SPEC'테이블에도 체크조건이 있음을 짐작할 수 있다.
그 이유는 ④에 나타난 숫자인 7701을 보면 체크조건에 의해 18건이 걸러졌음을 짐작할 수 있다.
④ 조인의 최종 결과가 7701건임을 의미한다.
2. OUTER JOIN
Rows Execution Plan
------- -----------------------------------------------------
④ 280 NESTED LOOPS (OUTER)
② 74861 TABLE ACCESS (BY INDEX ROWID) OF 'BAL_ITEM'
① 210991 INDEX (RANGE SCAN) OF 'PK_BAL_ITEM' (UNIQUE)
③ 53200 TABLE ACCESS (FULL) OF 'TPF_INFO'
① 'BAL_ITEM' 테이블의 기본키를 범위처리로 스캔하면서 인덱스에 있는 ROWID로 테이블을 엑세스한다.
이렇게 스캔한것은 총 210991 건이지만 실제로 테이블을 액세스한 것은 74861건이다.
그 이유는 최소 두 개 이상의 컬럼에 조건이 부여되었지만 이들이 결합 인덱스로 구성된 기본키에서 연속된 순서를
가지고 있지 않다는 것을 나타낸다.
② 이 테이블을 액세스한 74861건 중에서 체크조건에 의해서 다시 걸러지고 남은건은 280건이다.
연결고리에 인덱스가 없기 때문에 연결대상마다 매번 전체테이블 스캔을 하였다.
이 조인은 아우터 조인이기 때문에 설사 연결에 실패했더라도 조인은 언제나 성공이므로 조인결과 집합인 280과 동일하다.
③ 이 테이블을 스캔한 로우수는 53200이지만 이테이블과의 연결을 시도한 횟수는 280이다.
즉, 테이블의 총 로우수는 190 (53200/280) 건이다.
④ 연결을 시도한 280건이 아우터 조인에 의해서 모두 성공하게 되므로 최종결과는 280건이다.
출처 : 새로쓴 대용량 데이터베이스 솔루션 vol.1