1. 생성
CREATE [UNIQUE] INDEX index
ON table (column1 [ASC| DESC] [, column2 [ASC|DESC],…]);
2. 인덱스 생성 조건
1) WHERE 절이나 조인 조건 절에서 자주 사용되는 칼럼
2) 전체 데이터 중에서 10 ~ 15% 이내의 데이터를 검색하는 경우 - 옵티마이져가 계획을 세워서 자동으로 판단 후 실행
3) 두개 이상의 칼럼이 WHERE 절이나 조인 조건에서 자주 사용되는 경우
4) 테이블에 저장된 데이터의 변경이 드문 경우
3. 인덱스의 종류
1) 고유 인덱스 : 유일한 값을 가지는 컬럼에 대해 생성하는 인덱스
ex) CREATE UNIQUE INDEX idx_dept_name ON department (dname);
2) 비고유 인덱스 : 중복간 값을 가지는 칼럼에 대해 생성하는 인덱스
ex) CREATE INDEX idx_stud_birthdate ON student(birthdate);
3) 단일 인덱스 : 하나의 칼럼으로만 구성된 인덱스
ex)CRAETE INDEX idx_stud_dno_deptno ON student(deptno);
4) 결합 인덱스 : 두 개 이상의 칼럼을 결합하여 생성되는 인덱스. WHERE 절의 조건 비교에서 두 개 이상의 칼럼이 AND로 연결되어 자주 사용되는 경우에 주로 생성함.
ex)CRAETE INDEX idx_stud_dno_grade ON student (deptno, grade);
5) Descending index : 인덱스에서 정렬을 desc, asc를 정할 수 있다.
6) 함수기반 인덱스(FBI) : 오라클 8i부터 지원되는 것으로 컬럼에 대한 연산이나 함수의 계산 결과를 인텍스로 생성 가능
ex)create index idx_standard_height on student((height-100)*0.9);
4. 인덱스 정보 조회 : 인덱스에 대한 정보는 user_indexes , user_ind_columns 로 조회 가능함. 그러나 함수식이 변경되면 인덱스를 삭제 후 새로 생성해야하는 단점이 있다.
ex) SELECT index_name, uniqueness FROM user_indexes WHERE table_name='STUDENT';
SELECT index_name, column_name FROM user_ind_columns WHERE table_name='STUDENT';
5. 인덱스 삭제
DROP INDEX index;
ex)DROP INDEX fidx_stud_no_name;
6. 인덱스 재구성 : 테이블에 정의된 컬럼 값에 대해 변경 사항이 자주 발생할 경우 인덱스 키의 정렬 순서를 유지하기 위하여 노드값을 조정
alter index [schema] index rebuild [tablespace tablespace]
ex)alter index stud_no_pk rebuild;
CREATE [UNIQUE] INDEX index
ON table (column1 [ASC| DESC] [, column2 [ASC|DESC],…]);
2. 인덱스 생성 조건
1) WHERE 절이나 조인 조건 절에서 자주 사용되는 칼럼
2) 전체 데이터 중에서 10 ~ 15% 이내의 데이터를 검색하는 경우 - 옵티마이져가 계획을 세워서 자동으로 판단 후 실행
3) 두개 이상의 칼럼이 WHERE 절이나 조인 조건에서 자주 사용되는 경우
4) 테이블에 저장된 데이터의 변경이 드문 경우
3. 인덱스의 종류
1) 고유 인덱스 : 유일한 값을 가지는 컬럼에 대해 생성하는 인덱스
ex) CREATE UNIQUE INDEX idx_dept_name ON department (dname);
2) 비고유 인덱스 : 중복간 값을 가지는 칼럼에 대해 생성하는 인덱스
ex) CREATE INDEX idx_stud_birthdate ON student(birthdate);
3) 단일 인덱스 : 하나의 칼럼으로만 구성된 인덱스
ex)CRAETE INDEX idx_stud_dno_deptno ON student(deptno);
4) 결합 인덱스 : 두 개 이상의 칼럼을 결합하여 생성되는 인덱스. WHERE 절의 조건 비교에서 두 개 이상의 칼럼이 AND로 연결되어 자주 사용되는 경우에 주로 생성함.
ex)CRAETE INDEX idx_stud_dno_grade ON student (deptno, grade);
5) Descending index : 인덱스에서 정렬을 desc, asc를 정할 수 있다.
6) 함수기반 인덱스(FBI) : 오라클 8i부터 지원되는 것으로 컬럼에 대한 연산이나 함수의 계산 결과를 인텍스로 생성 가능
ex)create index idx_standard_height on student((height-100)*0.9);
4. 인덱스 정보 조회 : 인덱스에 대한 정보는 user_indexes , user_ind_columns 로 조회 가능함. 그러나 함수식이 변경되면 인덱스를 삭제 후 새로 생성해야하는 단점이 있다.
ex) SELECT index_name, uniqueness FROM user_indexes WHERE table_name='STUDENT';
SELECT index_name, column_name FROM user_ind_columns WHERE table_name='STUDENT';
5. 인덱스 삭제
DROP INDEX index;
ex)DROP INDEX fidx_stud_no_name;
6. 인덱스 재구성 : 테이블에 정의된 컬럼 값에 대해 변경 사항이 자주 발생할 경우 인덱스 키의 정렬 순서를 유지하기 위하여 노드값을 조정
alter index [schema] index rebuild [tablespace tablespace]
ex)alter index stud_no_pk rebuild;
'Database > Oracle' 카테고리의 다른 글
데이터 딕셔너리 (0) | 2009.12.30 |
---|---|
데이터 무결성 제약조건 (1) | 2009.12.30 |
뷰 View (1) | 2009.12.30 |
Admin Workshop 1 - 구조 10g (0) | 2009.12.30 |
Query 실행 과정 10g (1) | 2009.12.30 |