티스토리 뷰

it

오라클 인덱스

ITs Story biaos 2023. 6. 16. 03:15

인덱스

;

데이터베이스 실무에서 인덱스는 다음과 같은 경우에서 생성하는 것이 효율적이다.

WHERE 절이나 조인 조건절에서 자주 사용되는 칼럼

전체 데이터중 10~15% 이내의 데이타를 검색하는 경우

두개 이상의 칼럼이 WHERE 절이나 조인 조건에서 자주 사용되는 경우

테이블에 저장된 데이터의 변경이 드문 경우

;

인덱스의 종류 및 생성 방법

사용법

CREATE [UNIQUE] INDEX index ON table (column1[ASC|DESC] [,column2[ASC|DESC] );

;

UNIQUE : 고유 인덱스 지정

ASC|DESC : 인덱스 키를 오름차순 또는 내림차순으로 정렬


;

비고유 인덱스

비고유 인덱스는 중복된 값을 가지는 칼럼에 대해 생성하는 인덱스로 하나의인덱스 키는 테이블의 여러 행과 연결될 수 있다.

단일 인덱스

하나의 칼럼으로만 구성된 인덱스이다.

;

결합 인덱스

결합인덱스는 두개 이상의 칼럼을 결합하여 생성하는 인덱스이다.


;

학생테이블의 deptno, grade 칼럼을 결합 인덱스로 생성하여라. 결합 인덱스의 이름은 idx_stud_dno_grade로 정의함

> CREATE INDEX idx_stud_dno_grade ON student(deptno, grade);

;

DESCENDING INDEX

결합인덱스에서 칼럼의 정렬순서는 오름차순으로 고정되있다. DESCENDING INDEX는 칼럼별로 정렬 순서를 별도로 지정하여 결합인덱스를 생성하기 위한 방법이다, 즉 오름차순과 내림차순으로 각각 정렬된 두개의 칼럼을 결합하여 결합인덱스를 생성할 수 있다.

;

학생테이블에서 deptno와 name칼럼으로 결합인덱스를 생성하여라, 단 deptno칼럼은 내림차순으로 name칼럼은 오름차순으로 생성하여라

;

> CREATE INDEX fidx_stud_no_name ON student (deptno DESC, name ASC);

;

인덱스 관리

인덱스 정보 조회

인덱스에 대한 정보는 user_indexes나 user_ind_columns 데이터 딕셔너리 뷰를 통해 조회할 수 있다. user_indexes에서는 인덱스 이름과 유일성 여부 등을, user_ind_columns에서는 인덱스 이름, 인덱스가 생성된 테이블 이름과 칼럼 이름 등을 확인할 수 있다.

;

학생테이블에 생성된 인덱스를 조회하여라

> SELECT index_name, uniqueness FROM user_indexes WHERE table_name = ‘STUDENT’;

;

>SELECT index_name, column_name FROM user_ind_columns WHERE table_name = ‘STUDENT’;

;

인덱스 삭제

DROP INDEX명령문을 사용하여 삭제.

하지만 기본키나 고유키 제약조건 생성시 오라클에 의해 자동적으로 생성되는 인덱스는 DROP INDEX 명령문으로 삭제할 수 없다.

;

학생테이블에 생성한 fidx_stud_no_name 인덱스를 삭제하여라

;

> DROP INDEX fidx_stud_no_name ;

댓글