티스토리 뷰

데이터관리

[오라클] 인덱스

앙망 2011. 1. 28. 18:01
인덱스 용량이 부족하다는 에러가 났단다..
ORA-1654: unable to extend index XX.IDX_XXX by 8192 in tablespace               TS_COMINDS_02
Fri Jan 28 17:31:33 2011

인덱스가 뭘까?

일단 인덱스와 테이블은 독립적이란다.
그래서 삭제해도 데이터에는 영향을 미치지 않는다고...다행이다.

인덱스는 pointer를 이용하여 빠른 검색을 지원하는 객체이다.
인덱스가 설정되지 않는 테이블은 검색할 때 Full Scan을 한다.

일단 인덱스가 생성되면 사용 및 유지보수는 오라클 서버에서 자동관리 된다.
오라클 인덱스는 B-tree(Binary search tree)를 기반

인덱스 조회
SELECT *
     FROM USER_INDEXES ;




인덱스 생성 방법
자동 인덱스(Unique Index)-primary key, unique  에 의해 자동적으로 생성
수동 인덱스 : CREATE INDEX 명령을 실행해서 생성

UNIQUE INDEX : 인덱스 컬럼이 중복값을 가지지 않는다.
NON-Unique Index : 컬럼에 중복 데이터 값을 가질 수 있다
결합 인덱스 : 복수개의 컬럼을 가지고 인덱스를 생성, 최대 16개


인덱스를 생성하는 것이 좋은 컬럼
  • ① WHERE절이나 join조건 안에서 자주 사용되는 컬럼
  • ② null 값이 많이 포함되어 있는 컬럼
  • ③ WHERE절이나 join조건에서 자주 사용되는 두 개이상의 컬럼들
다음과 같은 경우에는 인덱스 생성이 불필요 하다.
  • ① 테이블이 작을 때
  • ② 테이블이 자주 갱신될 때

인덱스가 불필요한 경우
     테이블이 작을 때
     테이블이 자주 갱신 될 때



참고
오라클클럽 : 강좌 URL : http://www.oracleclub.com/lecture/1035
댓글