반응형

1. 인덱스 정의

어떠한 데이터가 저장소 하드 디스크에 어느 위치에 저장되어있는지 위치 정보를 가진 주소록 같은 개념이다. 이러한 인덱스가 존재한다면 DML 실행하였을 보다 빠른 쿼리 검색이 가능해진다.

 

2. 인덱스 생성의 개념 원리

Table Full Scan(모든 테이블 스캔  à PGA내의 Sort Aread Sort정렬 공간 부족시 Temporary tablespace 이용해 정렬  -> HDD Block에기록 인덱스는 데이터가 정렬되어 들어간다.

 

3. 인덱스의 구조와 작동 원리(B-Tree 방법 기준 )

테이블 인덱스

테이블은 컬럼이 여러 , 데이터가 정렬되지 않고 입력된 순서대로 들어간다

 

인덱스는 컬럼이  Key컬럼(사용자가 인덱스를 지정하라고 지정한 컬럼)과 ROWID컬럼 두개로 이루어져 있다. (오름차순, 내림차순 정렬 가능)

 

EX) SELECT * from index_test where num = 100;

만약 사용자가 데이터가 100만건이 있는 테이블의 데이터를 위와같이 SELECT문으로 조회하였을 먼저 서버 프로세스가 구문파싱 과정을 거친 DB Buffer Chache num 100 정보가 있는지 먼저 확인후 만약 해당 정보가 없다면 100이라는 정보를 가진 블록을 찾아서 DB buffer chache 가져온 해당 정보를 사용자에게 보여주게 된다.

 

1)  Index 존재 -> where절의 조건으로 컬럼이 index Key 생성되어있는지 확인후 인덱스에 먼저가서 100이라는 정보가 어떤 ROWID 가지고 있는지 해당 ROWID 있는 블록에 있는 데이터만 조회하여 DB Buffer Chache 복사 사용자에게 보여지게 된다.

 

2)  Index X  -> 100이라는 데이터가 어떠한 위치에 있는지 위치 정보를 모르기 때문에 100만건에 대한 정보를 모두 읽게된다. 즉 100만건을 모두 DB buffer cache 복사 Full Scan 방법으로 하나하나 읽으며 100 값을 찾게 된다.

반응형

+ Recent posts