※ 인덱스란?
인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의
원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조입니다.
자동 인덱스 : 프라이머리 키 또는 uinque 제한 규칙에 의해 자동적으로 생성되는 인덱스 입니다. |
※ Index를 생성하는 것이 좋은 Column |
※ 오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 있습니다. |
|
SQL>CREATE BITMAP INDEX emp_deptno_indx |
|
SQL>CREATE UNIQUE INDEX emp_ename_indx |
|
SQL>CREATE INDEX dept_dname_indx |
|
SQL>CREATE UNIQUE INDEX emp_empno_ename_indx |
※ 인덱스의 삭제
|
※ 인덱스에 대한 정보는 USER_INDEXES 뷰 또는 USER_IND_COLUMNS뷰를 통해 검색할 수 |
※ 인덱스 생성
Oralce 9i에서 인덱스는 Primary Key와 Unique Key와는 별도로 CREATE TABLE의 USING INDEX CREATE INDEX 문법을 이용해서 정의하는 것이 가능해 졌습니다.
아마도 대부분의 사용자들은 다음과 같은 방식을 알고 계실텐데…
예제를 보시면서 어떤 것이 바뀌었는지 확인토록 해보세요~~
SQL> create table test ( 테이블이 생성되었습니다. |
위의 create table문은 pk_test라는 이름을 가지는 primary key 제약 조건을 만들며 아울러 pk_test라는 이름을 가진 인덱스를 만듭니다. 이 두가지는 user_ind_colums 뷰와 user_constraints 뷰에서 table_name = ‘TEST’라는 조건을 주시면 확인이 가능합니다.
그러나 9i이후에서는 인덱스에 대해 명시적으로 이름을 주는 것이 가능해 졌는데…
우선 아래의 예제를 참고 하도록 하죠…
SQL> create table test ( c1 varchar2(4) not null, 테이블이 생성되었습니다. |
이 경우는 테이블을 만들면서 primary key를 만드는데 (원래는 default로 pk를 만들게 되면 그 컬럼으로 인덱스를 만듭니다.) 인덱스의 이름은 primary key 이름과 다르게 주기 위해 using index 구안에 create index문을 이용해서 인덱스를 생성했습니다.
--------------------------------------------------------------------
아래의 SQL문중 하나를 이용해 인덱스는 놔두고 PK만 삭제할 수 있습니다.
--------------------------------------------------------------------
SQL> alter table test drop primary key keep index; 테이블이 변경되었습니다. 또는 SQL> alter table test drop constraint pk_test; 테이블이 변경되었습니다. |
0