고래씌

[Oracle] 13. Object(INDEX) - INDEX 본문

Database/Oracle

[Oracle] 13. Object(INDEX) - INDEX

고래씌 2023. 12. 1. 09:35

1. INDEX

: 데이터를 빠르게 검색하기 위한 구조로 데이터의 정렬과 탐색과 같은 DBMS성능향상을 목적으로 사용

 

- 책에서 '목차'같은 역할을 하는 DBMS 객체
    
- 테이블에서 데이터를 조회(SELECT)할 때 인덱스가 없다면 테이블의 모든 데이터를 하나하나 뒤져서(FULL_SCAN) 내가 원하는 데이터를 검색한다
    
- 인덱스 설정을 해두면 테이블의 모든 행을 뒤지지 않고 내가 원하는 조건만 빠르게 검색이 가능하다.
    
- 인덱스로 설정한 칼럼의 데이터들을 별도로 "오름차순으로 정렬"하여 특정메모리 공간에 물리적 주소값과, 실제 칼럼의 값을 함께 저장시킨다.

 

 

▶ 현재 계정에 생성된 인덱스들

SELECT * FROM USER_INDEXES;

 

 

 

SELECT * FROM USER_IND_COLUMNS;

 

 

 

▶ ① 일반 칼럼 인덱스 생성

CREATE INDEX IND_EMPLOYEE ON EMPLOYEE(EMP_NAME);

 

 

② 인덱스 추가후 인덱스 사용여부 확인 F10

 

☞ 인덱스 사용중임을 알수 있음

 

 

▶ 여러칼럼에 인덱스 부여 가능

CREATE INDEX IND_EMPLOYEE_COM
ON EMPLOYEE(EMP_NAME, DEPT_CODE);

 

 

1) 인덱스의 장점

WHERE절에 인덱스 칼럼을 사용시 훨씬 빠르게 연산 가능하다.

 

☞ ORDER BY 연산을 사용할 필요가 없다.(이미 정렬되어 있다.)

 

☞  MIN, MAX 값을 찾을 떄 연산속도가 매우 빠름(이미 정렬되어있기 때문에)

 

 

2) 인덱스의 단점

☞ 인덱스가 많을수록 저장공간을 잡아먹는다. 인덱스를 만들면 만들수록 저장공간이 부족해지게되므로 적절한 수준을 유지해야한다.


INDEX를 활용한 INDEX-SCAN보다 단순한 FULL-SCAN이 더 유리할때가 있다. 일반적으로 테이블의 전체데이터중 10~15%의 데이터를 처리하는 경우에만 효율적이다.


DML에 취약하다(INSERT, UPDATE, DELETE).  INSERT, UPDATE, DELETE 등 데이터가 새롭게 추가 수정 삭제되면, 인덱스테이블 안에 있는 값들을 다시 정렬하고, 물리적 주소값을 수정해줘야 한다.

'Database > Oracle' 카테고리의 다른 글

[Oralce] 15. Object(Procedure) - 프로시저  (0) 2023.12.01
[Oracle] 14. PL/SQL  (0) 2023.12.01
[Oracle] 12. Object(SEQUENCE) - 시퀀스  (0) 2023.11.30
[Oralce] DDL 실습문제  (0) 2023.11.30
[Oracle] 11. Object(VIEW)  (0) 2023.11.30