반응형

SQLBOOSTER 5

INDEX의 기본 개념_INDEX RANGE SCAN VS. TABLE ACCESS FULL

INDEX RANGE SCAN VS. TABLE ACCESS FULL 랜덤 액세스(RANDOM ACCESS) IO 작업 한 번에 하나의 블록을 가져오는 접근 방법을 뜻한다. 인덱스의 리프 블록에서 ROWID를 이용해 테이블에 접근할 때 랜덤 액세스가 발생한다. 실행계획에는 'TABLE ACCESS BY INDEX ROWID'로 표시 된다. 찾으려는 데이터가 많지 않으면, 랜덤 액세스가 나쁜 방법은 아니다. 그러나 찾으려는 데이터가 많 으면 랜덤 액세스는 오히려 비효율적이다. 예제 ) INDEX RANGE SCAN을 사용하는 SQL SELECT /*+ GATHER_PLAN_STATISTICS */ T1.CUS_ID, COUNT(*) ORD_CNT FROM T_ORD_BIG T1 WHERE T1.ORD_YM..

INDEX 2021.07.03

INDEX의 기본 개념_데이터를 찾는 방법

데이터를 찾는 방법 오라클에서 데이터를 찾는 방법은 아래와 같이 세 가지가 있다. - 테이블 전체 읽기(TABLE ACCESS FULL) - 인덱스를 이용한 찾기(INDEX RANGE SCAN & TABLE ACCESS BY INDEX ROWID) - ROWID를 이용한 직접 찾기(TABLE ACCESS BY INDEX ROWID) '테이블 전체 읽기(TABLE ACCESS FULL)'는 테이블의 데이터 블록을 차례대로 모두 읽으면서 필요한 데 이터를 찾는 방법이다. 인덱스를 이용한 찾기(INDEX RANGE SCAN & TABLE ACCESS BY INDEX ROWID)'는 인덱스를 이용 해 필요한 데이터만 찾는 방법이다. 이 방법은 필요에 따라 'TABLE ACCESS BY INDEX ROWID'작업..

INDEX 2021.07.03

INDEX의 기본 개념_B*트리 구조와 탐색 방법

B*트리 구조와 탐색 방법 인덱스를 생성할 때 별다른 옵션을 정의하지 않으면 B*트리 구조의 인덱스가 만들어진다. 트리(Tree)는 원하는 데이터를 빠르게 찾기 위해 사용되는 대표적인 자료구조다. B*트리는 균형이 잡혀 있고 근접한 리프 노드가 연결된 구조다. B*트리는 그림과 같이 루트(Root), 브랜치(Branch), 리프(Leaf) 세 가지 유형의 블록으로 구성되어 있다. 인덱스를 구성하는 블록은 인덱스 블록이라고 한다. 인덱스 블록은 서로 연결되어 있다. 루트 블록은 자 신의 하위 브랜치 블록과 연결되어 있고, 브랜치 블록은 다시 자신의 하위 브랜치 블록과 연결되어 있거 나, 리프 블록과 연결되어 있다. 실제 브랜치 블록은 여러 단계일 수 있고, 리프 블록 밑으로는 다른 인덱 스 블록은 없다. ..

INDEX 2021.07.03

INDEX의 기본 개념_인덱스 종류

인덱스 종류 인덱스를 구성하는 컬럼 수에 따라 단일 인덱스, 복합 인덱스로 구분된다. - 단일 인덱스(Single column index) : 인덱스에 하나의 컬럼만 사용 - 복합 인덱스(Composite index) : 인덱스에 두 개 이상의 컬럼을 사용 단일 인덱스는 하나의 컬럼만으로 구성한다. 주로 PK 속성이 단일 컬럼일 때 사용한다. 반면에 복합 인덱 스는 여러 개의 컬럼으로 구성한다. 잘 만들어진 하나의 복합 인덱스는 여러개의 인덱스를 대신할 수 있 으며, 여러 SQL의 성능을 커버할 수 있다. 복합 인덱스는 멀티 컬럼 인덱스 또는 결합 인덱스라고도 한다. 또 다른 방법으로 인덱스를 구성하는 컬럼 값들의 중복 허용 여부에 따라 유니크 인덱스, 비유니크 인덱스로 구분된다. - 유니크 인덱스(Un..

INDEX 2021.07.03
728x90
반응형