study:oracle:datadb:3week_1:01
문서의 이전 판입니다!
목차
3.2.1. 스캔(Scan)의 기본유형
3.2.1.1. 전체테이블 스캔
- 3.2.1.1. 전체테이블 스캔
- HIGH WATER MARK내에 있는 모든 블록을 스캔
- HIGH WATER MARK : 사용된 저장공간의 총합계 또는 데이터를 INSERT하기 위한 포맷된 영역 표시
- 대용량 일수록 전략적으로 사용하면 인덱스 스캔에 비하여 좋은 효율을 나타낼 수 있음(손익 분기점)
- 멀티 블록 I/O
- DB_FILE_MULTIBLOCK_READ_COUNT 파라미터 사용
- 옵티마이져의 전체 테이블 스캔 선택 사유
- 적용가능 인덱스의 부재
- 넒은 범위의 데이터 액세스
- 소량의 테이블 액세스
- 병렬처리 액세스
3.2.1.2. ROWID 스캔
- 3.2.1.2. ROWID 스캔
3.2.1.3. 인덱스 스캔
- 3.2.1.3. 인덱스 스캔
- 가)인덱스 유일 스캔(Index Unique Scan)
- 대부분 단 하나의 ROW를 추출
- 전제조건을 만족할 경우 옵티마이져는 인덱스 유일 스캔을 선택
- 인덱스가 기본키 이거나, 유일 인덱스(UNIQUE INDEX)로 구성
- 인덱스를 구성하는 모든 컬럼들이 모두 조건절에서 ‘=‘(EQUAL)비교
- 데이터베이스 링크(DATABASE LINK) 사용 시 힌트로 적용
- 힌트는 INDEX(TABLE_ALIAS INDEX_NAME) 힌트 적용
ex) SELECT * FROM TAB1 WHERE COL1 = ‘A’
- 나)인덱스 범위 스캔(Index Range Scan)
- 추출되는 ROW는 INDEX 구성 컬럼의 정렬 순서와 동일
- ORDER BY 절이 있더라도 추가 정렬 작업이 필요 없을 수도 있음
- NON UNIQUE INDEX, UNIQUE INDEX
- 하나이상의 인덱스 선행컬럼에 상수나 변수로 조건이 부여되어야함
- 비교연산자는 ‘=, <, ⇐, >, >=, BETWEEN, LIKE’등
- 단, LIKE 연산자 사용시 ‘%ABC’의 경우 범위 스캔 불가
- COL1 + COL2 + COL3 에서 COL2 조건이 없는 경우
<code sql> ex)
SELECT * FROM TAB1
WHERE COL2 BETWEEN 100 AND 110</code>
- 다)인덱스 역순 범위 스캔(Index Range Scan Descending)
- 라)인덱스 스킵 스캔(Index Skip Scan)
- 마)인덱스 전체 스캔(Index Full Scan)
- 바)인덱스 고속 전체 스캔(Index Fast Full Scans)
3.2.1.4. B-Tree 클러스터 액세스(Cluster access)
- 3.2.1.4. B-Tree 클러스터 액세스(Cluster access)
3.2.1.5. 해쉬 클러스터 액세스(Hash cluster access
- 3.2.1.5. 해쉬 클러스터 액세스(Hash cluster access)
3.2.1.6. 표본 테이블 액세스(Sample table scan
- 3.2.1.6. 표본 테이블 액세스(Sample table scan)
study/oracle/datadb/3week_1/01.1274159729.txt.gz · 마지막으로 수정됨: 저자 upju



