DB

DB (13) OBJECT(INDEX)

동동이임 2023. 6. 13. 21:46

▶ INDEX

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

 

■ 인덱스의 특징

- 인덱스로 설정한 컬럼의 데이터들을 별도로 "오름차순으로 정렬"하여 특정 메모리 공간에 물리적인 주소(ROWID) 실제 컬럼의 값을 함께 저장시킨다.

- 인덱스를 만들었다고 해서 조건절에 인덱스를 활용한 컬럼을 제시했을 때 바로 사용하지는 않는다.
- 인덱스를 활용하여 조회할지 안할지는 옵티마이저가 판단한다.

 

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

SELECT * FROM USER_INDEXES; -- PK설정시 자동으로 인덱스 생성됨.

● 현재 계정에 생성된 인덱스와 + 인덱스가 적용된 컬럼을 확인

SELECT * FROM USER_IND_COLUMNS;

 

■ 인덱스의 장점

  1. WHERE 절에 인덱스 컬럼을 사용 시 훨씬 빠르게 연산이 가능하다.
  2. ORDER BY 연산을 사용할 필요가 없다.(이미 정렬되어 있다.)
  3. MIN, MAX값을 찾을 때 연산속도가 매우 빠르다.(이미 정렬되어 있기 때문이다.)

 

■ 인덱스의 단점

  1. DML에 취약하다.(INSERT, UPDATE, DELETE 등 데이터가 새롭게 추가/삭제되면 인덱스테이블안에 있는 값들을 다시 정렬하고 물리적 주소를 수정해줘야 한다.
  2. INDEX를 이용한 INDEX-SCAN보다 단순한 FULL-SCAN이 더 효율적일 때가 있다.
  3. 인덱스가 많으면 많을수록 저장공간을 잡아먹는다.