3.2.4 비트맵(Bitmap) 실행계획
- 전반적인 내용을 보면 비트맵 실행계획의 특징이나 특이성을 설명한 것이 아니므로
BITMAP에 대한 전반적인 내용으로 변경하여 발표함. 실행계획에 대해서는 크게 설명할 내용 없음
3.2.4.1 조건 연산자 별 비트맵 실행계획
가)동치(Equal)비교 실행계획
- 기본 비트맵 수행 방식을 그림으로 설명할 계획임
나)범위(Range)비교 실행계획
- 비트맵 인덱스에서는 범위 연산을 하면 RANGE SCAN이 실행 계획에서 발생함
- B-Tree일 경우 NUMBER 형을 LIKE로 검색할 경우 인덱스를 사용할 수 없으나, 비트맵은 인덱스를 FULL SCAN 하는 실행 계획이 발생함
다)AND 조건 실행계획
- 비트맵 인덱스에서 AND 조건을 사용할 경우 AND 연산을 수행함
라)OR 조건 실행계획
- 비트맵 인덱스에서 OR 조건에 기술된 컬럼의 모든 인덱스를 활용할 수 있음
마)부등식(Not Equal) 비교 실행계획
- 비트맵 인덱스에서 부등식이 사용되면 BITMAP MINUS 연산을 수행하여 인덱스를 활용할 수 있음
- NOT NULL 제약 조건이 없는 경우 NULL을 제거하는 작업이 추가로 수행됨
바) NULL 비교 실행계획
- 비트맵 인덱스에서 NULL은 정상적인 값들과 동일하게 취급됨
3.2.4.2 서브쿼리 실행계획
- 비트맵 인덱스라고 해서 서브쿼리를 포함한 어떠한 조인에서도 B-Tree 인덱스일 때와 달라지는 것은 없음
2.4.3 B-Tree 인덱스와의 연합(Combine) 실행계획
- 비트맵을 ROWID로 전환할 수 있고, 다시 ROWID를 비트맵으로 전환할 수 있는 특성을 이용해 B-Tree 인덱스를 BITMAP으로 전환하여 BITMAP 연산을 수행
--> DYNAMIC SQL 에서 비트맵 컨버젼으로 변환하여 수행하는 경우 있음 ML
3.2.5 기타 특수한 목적을 처리하는 실행계획
3.2.5.1 순환(Recursive) 전계 실행계획
- CONNECT BY START WITH를 사용하여 순환 전개 시 나타나는 실행 계획
- 설명 및 그림 추가
- WHERE 절 조건 추가랑 START WITH 절에서 조건을 사용했을 때 차이 점 설명
- SIBLINGS BY 도 설명해줘야 함
3.2.5.2 UPDATE 서브쿼리 실행계획
- UPDATE 사용 시 WHERE 절 SET 절 모두에 서브쿼리를 사용할 수 있음
- 서브쿼리 수행 결과가 NO DATA FOUND 일 경우 NULL값으로 UPDATE되므로 주의해야 함
3.2.5.3 특이한 형태의 실행계획
가)서브쿼리 팩토링 실행계획
- WITH 절을 사용하여 생성한 쿼리문을 TEMPORARY 테이블로 생성하여 사용하는 방식
- 인라인 뷰와 WITH절은 거의 동일하지만 가장 큰 차이는 인라인뷰는 여러 번 수행되지만 WITH절은 한번 사용한 결과를 TEMPORARY 테이블에 저장하여 재 사용하는 방식
나)특이한 DELETE 문 서브쿼리
- FROM절 인라인 뷰를 사용한 DELETE 구문
다)다중 테이블 입력 서브쿼리
- 하나의 쿼리로 액세스한 로우를 여러 개의 테이블에 동시 입력할 수 있는 기능
라)Having 절 서브쿼리 실행계획
- HAVING절은 GRUOUP BY에서 생성된 결과에 다시 조건을 부여하기 위해 사용하는 구문
마)ROLLUP, CUBE, GROUPING SETS 처리 실행계획
- ROLLUP과 CUBE는 GROUP BY 한 결과에 대해 여러가지 소계를 쉽게 구함
- ROLLUP은 소계와 총계를 구하는 함수
- CUBE는 다시 공부
- GROPING SET 에서 정의한 그룹 단위마다 하나씩의 그룹이 생김
EX) GROPING SET ((DEPTNO,JOB),(ENAME,DEPTNO));
바)MERGE 문 실행계획
- 처리 대상과 정보 제공 집합을 아우터 조인하여 조인에 성공하면 UPDATE 실패하면 INSERT 함
- I/O 효율을 위해 다중 처리 기법을 활용
- MATCH인 경우 UPDATE 절과 필요하다면 DELETE 절을 기술함(버전에 따라 다름)