어흥

[Oracle] Index 본문

Oracle

[Oracle] Index

라이언납시오 2020. 7. 9. 12:55
728x90
반응형

1. 정의

: 인덱스는 DB 테이블에 있는 데이터를 빨리 찾기 위한 용도의 DB 객체이며, 일종의 색인기술이다

 

2. 특징

- 테이블에 Index를 생성하게 되면 Index Table을 생성해서 관리

- Index는 테이블에 있는 1개 이상의 Column을 이용해서 만들 수 있다

 

3. 선언

CREATE INDEX IDX_TEST ON EMPLOYEE(ID,NAME,SALARY);			--IDX_TEST INDEX 생성
SELECT * FROM USER_INDEXES WHERE TABLE_NAME = 'IDX_TEST';		--생성한 인덱스들 조회
DROP INDEX IDX_TEST							--IDX_TEST INDEX 삭제

 

4. Plan을 통한 일반호출 v.s 인덱스를 통한 호출 비교

 

EMPLOYEE Table에 약 180만개의 Data가 있다고 가정

----일반 호출----
SELECT ID, NAME, SALARY
FROM EMPOLYEE
WHERE SALARY>0;



----인덱스를 통한 호출----
SELECT *
FROM IDX_TEST
WHERE SALARY>0;

1) 일반 호출의 경우

: Table Access(Full) ~~~, Cost=25K, Card=2M, Bytes=39M

 

2) 인덱스를 통한 호출

: Index(Range Scan), Cost=9, Card=2M, Bytes=39M

 

결론: 최적화를 통해 시간을 절약해주는 Index를 사용하면 특정 SQL을 더 빠르게 처리할 수 있다

 

5. 단점

- 데이터의 변화에 대응을 하지 못한다

  -> Index를 통해 얻었던 기존 정보가 변하면 Rebuild나 삭제후, 다시 만들어야 한다

- 저장공간을 차지하기 때문에 많은 Index 생성

  -> 많은 공간 차지

 

728x90
반응형

'Oracle' 카테고리의 다른 글

[Oracle] MERGE INTO  (0) 2020.08.04
[Oracle] Sequence  (0) 2020.07.22
[Oracle] Plan  (0) 2020.07.09
[Oracle] SQL (DDL, DML)  (1) 2020.07.07
Comments