본문 바로가기
IT ▶/Data

데이터베이스 계층검색(START WITH), 실행 계획(Execution plan) 분석

by 오프로 2020. 3. 11.

 

 

 

 

# 인라인뷰

 

 

-   FROM 절에서 사용하는 서브 쿼리

 

-   문장이 실행되는 동안 존재되며, 일반 뷰와 같이 사용

 

 

 

 

# 계층 검색 (START WITH, CONNECT BY PRIOR)

 

 

SELECT [LEVEL], 컬럼,

FROM 테이블

[WHERE 조건]

START WITH 시작조건

CONNECT BY PRIOR 계층조건

;

 

 

1> LEVEL

 

-   계층 트리에서 각 노드의 깊이 의미

 

-   루트 노드부터 1씩 증가하면서 자식 노드로 이동

 

 

 

2> START WITH : 계층의 루트 행 지정

 

 

 

3> CONNECT BY PRIOR

 

 

-   계층 구조 검색방향 설정

 

-   부모컬럼 = 자식컬럼 : 계층을 하향 검색

 

-   자식컬럼 = 부모컬럼 : 계층을 상향 검색

 

 

 

 

 

# 실행 계획 (EXECUTION PLAN)

 

 

 

1> PARSE -> EXECUTE -> FETCH

 

 

-   파스 (PARSE) : 문장 수행 전 db 엔진이 해당 쿼리를 어떻게 수행할지 결정하는 과정 (실행 계획 설정)

 

-   실행 (EXECUTE) : 파스 과정에서 계획된 실행 계획으로 쿼리 수행

 

-   추출 (FETCH) : SELECT 경우 실행결과를 화면에 출력하여 최종 사용자 확인

 

-   실행계획 수립은 RDBMS 엔진 옵티마이저 역할 : SQL 분석하여 최적의 처리 실행계획 생성

 

 

 

2> 실행계획 분석

 

 

-   로우 소스 : 각 실행 되는 행

 

-   하위레벨의 로우 소스부터 수행되며, 동일한 레벨은 위 로우소스부터 수행

 

 

 

 

<SQL PLAN>

 

ID        OPERATION

----------------------------------------------------------

0         SELECT STATEMENT

1         NESTED LOOP

2              TABLE ACCESS BY INDEX ROWID  (PART)

3                    INDEX UNIQUE SCAN          (NAME_ENO_PK)

4              TABEL ACCESS FULL                 (COMP)

 

 

 

 

-   실행계획 읽는 순서 : 3 -> 2 -> 4 -> 1 -> 0

 

 

-   실행계획 해석

 

 

1.   3 ID 실행 : NAME_ENO_PK 인덱스가 먼저 수행되면서 eno 값과 해당 rowid 읽는다.

 

2.   2 ID 실행 : 3에서 찾은 rowid PART 테이블의 행을 찾는다.

 

3.   4 ID 실행 : PART 테이블 행의 ENO값이 같은 데이터를 COMP 테이블에서 검색한다.

 

4.   NESTED LOOP 조인 : 선행 테이블의 행을 검색하고 해당 행을 통해 다음 테이블 행을 검색해가는 과정

 

 

 

 

728x90
300x250