새로쓴 대용량 데이터베이스솔루션 1 (2011년)
비트맵(Bitmap) 실행계획 0 0 31,550

by 구루비스터디 비트맵 순환 Recursive Bitmap [2023.10.21]


비트맵(Bitmap) 실행계획

  • 전반적인 내용을 보면 비트맵 실행계획의 특징이나 특이성을 설명한 것이 아니므로 BITMAP에 대한 전반적인 내용으로 변경하여 발표함. 실행계획에 대해서는 크게 설명할 내용 없음


조건 연산자 별 비트맵 실행계획

가) 동치(Equal)비교 실행계획
  • 기본 비트맵 수행 방식을 그림으로 설명할 계획임


나) 범위(Range)비교 실행계획
  • 비트맵 인덱스에서는 범위 연산을 하면 RANGE SCAN이 실행 계획에서 발생함
  • B-Tree일 경우 NUMBER 형을 LIKE로 검색할 경우 인덱스를 사용할 수 없으나, 비트맵은 인덱스를 FULL SCAN 하는 실행 계획이 발생함


다) AND 조건 실행계획
  • 비트맵 인덱스에서 AND 조건을 사용할 경우 AND 연산을 수행함


라) OR 조건 실행계획
  • 비트맵 인덱스에서 OR 조건에 기술된 컬럼의 모든 인덱스를 활용할 수 있음


마) 부등식(Not Equal) 비교 실행계획
  • 비트맵 인덱스에서 부등식이 사용되면 BITMAP MINUS 연산을 수행하여 인덱스를 활용할 수 있음
  • NOT NULL 제약 조건이 없는 경우 NULL을 제거하는 작업이 추가로 수행됨


바) NULL 비교 실행계획
  • 비트맵 인덱스에서 NULL은 정상적인 값들과 동일하게 취급됨


서브쿼리 실행계획

  • 비트맵 인덱스라고 해서 서브쿼리를 포함한 어떠한 조인에서도 B-Tree 인덱스일 때와 달라지는 것은 없음


B-Tree 인덱스와의 연합(Combine) 실행계획

  • 비트맵을 ROWID로 전환할 수 있고, 다시 ROWID를 비트맵으로 전환할 수 있는 특성을 이용해 B-Tree 인덱스를 BITMAP으로 전환하여 BITMAP 연산을 수행
  • DYNAMIC SQL 에서 비트맵 컨버젼으로 변환하여 수행하는 경우 있음 ML


기타 특수한 목적을 처리하는 실행계획

순환(Recursive) 전계 실행계획

  • CONNECT BY START WITH를 사용하여 순환 전개 시 나타나는 실행 계획
  • 설명 및 그림 추가
  • WHERE 절 조건 추가랑 START WITH 절에서 조건을 사용했을 때 차이 점 설명
  • SIBLINGS BY 도 설명해줘야 함


UPDATE 서브쿼리 실행계획

  • UPDATE 사용 시 WHERE 절 SET 절 모두에 서브쿼리를 사용할 수 있음
    1. 서브쿼리 수행 결과가 NO DATA FOUND 일 경우 NULL값으로 UPDATE되므로 주의해야 함


특이한 형태의 실행계획


가) 서브쿼리 팩토링 실행계획
  • 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 절을 기술함(버전에 따라 다름)
"구루비 데이터베이스 스터디모임" 에서 2011년에 "새로쓴 대용량 데이터베이스 솔루션1" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4450

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입