2017년 3월 24일 금요일

[닷넷/C#/자바/오라클/국비지원IT교육/구로IT학원/재직자환급교육추천_탑크리에듀]1.11 실행계획 해석(predicate)

predicate란 인덱스 접근시의 컬럼 액세스 정보, 조인 정보, filter 정보를 각 Opreation 단위로 나타낸 것이다. access predicate : 데이터 블록을 어떤 방식으로 Access해서 읽었는지를 나타내는 것이다. filter predicate : 데이터 블록을 읽고 나서 데이터를 어떻게 필터링 했는지를 나타낸다. 위 쿼리는 중첩루프 조인을 이용하여 데이터를 추출했는데 중첩루프인 경우 먼저 드라이빙 테이블을 읽은 후 실제 조인은 후행 테이블을 읽을 때 발생하므로 access predicate가 4번 발생한다. 선행 테이블인 EMP 테이블을 읽을 때 filter("E"."DEPTNO" IS NOT NULL) predicate가 작동되어 DEPTNO가 NULL이 아닌 데이터만 로드한다. predicate의 정보는 데이터 추출시 중요한 정보가 된다. 만약 인덱스가 여러 개의 컬럼으로 구성된 복합 인덱스라면 인덱스 스캔시 인덱스 영역에서 칼럼이 모두 Access되었는지 등을 predicate로 확인할 수 있다. A칼럼 + B칼럼으로 인덱스가 구성되었다고 가정하자. predicate로 확인했을 때 A칼럼만 인덱스 스캔시 사용되었고 B칼럼은 filter predicate에 나타난다면 쿼리 성능에 문제가 있을 수 있기 때문이다. 이번에는 HASH 조인으로 쿼리를 실행해 보자.

댓글 없음:

댓글 쓰기