6. 인덱스
관계형 DBMS가 제공하는 물리적 저장구조 중의 하나로써 데이타 값을 사용하여 테이블을 신속하게 접근할 수 있는 수단을 말합니다.
(1) 인덱스의 구조
인덱스는 테이블과는 독립적인 구조로써 각 인덱스는 column 값과 값을 갖는 행에 대한 포인터(ROWID)로 구성됩니다. 포인터는 테이블의 행을 직접 지정하여 테이블 전체를 검색하지 않게 합니다.
(2) B*Tree
·이 트리는 어떤 행에 대한 액세스 횟수도 동일하게 안 이진의 균형 탐색 구조
·행이 테이블의 시작이나 중간, 또는 끝에 있어도 거의 같은 횟수 내에 지정된 값을 액세 스하는 효율적인 방법.
(3) 인덱스 유형
·Unique 인덱스 : 지정된 column의 값이 고유함을 보장
·Non-unique 인덱스 : 데이터를 query할 때 가장 빠른 결과를 보장
·단일 Column인덱스 : 오직 한 개의 column만이 인덱스에 있음
·연결 인덱스 또는 조합 인덱스 : 성능이나 고유함 검사를 목적으로 인덱스에 다수개의 column을 포함할 수 있음
(4) 인덱스를 만드는 때
·WHERE 절이나 조인 조건에서 column을 자주 이용할 때
·Column이 넓은 범위의 값을 가질 때
·많은 NULL값을 갖는 column일 때
·테이블이 크고 대부분의 query가 행의 10-15% 이하를 검색한다고 예상될 때
(5) 인덱스를 만들지 않아야 할 때
·테이블이 작을 때
·Column이 query의 조건으로 사용되는 경우가 별로 없을 때
·테이블이 자주 변경될 때
가. 인덱스 생성
CREATE [unique] INDEX 인덱스
ON 테이블 (Column[, Column]....)
[cluster];
※ 인덱스는 인덱스의 이름이고, Column은 인덱스되는 테이블의 column명입니다.
member 테이블의 name column에 query 액세스 속도를 빠르게 하기 위한 인덱스를 만듭니다.
SQL> create index member_name_idx
2 on member(name);
색인이 생성되었습니다.
나. 인덱스 삭제
DROP INDEX 명령을 써서 인덱스를 삭제하십시오. 인덱스를 삭제하려면 그 인덱스의 소유자이거나 DROP ANY INDEX 권한을 가지고 있어야 합니다.
DROP INDEX 인덱스의 이름;
SQL> drop index member_name_idx;
뷰가 삭제되었습니다.
|