본문 바로가기
Oracle/Index, Sequence, Synonym

데이터 베이스_ 오라클 [INDEX] 활용 1

by Super Santj 2019. 7. 3.

인덱스(index)의 형식_

create [unique] index 인덱스명(테이블명_필드명_idx) on 적용테이블명(필드명)

   ~on 적용 테이블명 (필드명1, 필드명2) -> 복합키(테이블 설계 문제, 정규화) = 해당 구문은 추후 심화과정으로 들어간후 추가적으로 기록하겠다. 지금의 레벨에서 이해하기 쉽지않고 오히려 복잡함만 추가가 될수가 있을수 있다. 우선 있다는것만 알고있으면 된다.

create index 인덱스명(테이블명_필드명_idx) -> 중복을 허용해주는 명령

우선 혹시 모르니 미리 생성해 놓은 백업 테이블로 진행한다.

인덱스를 생성해 보았다.

SQL> create index b_emp5_ename_idx on b_emp5(ename); 

인덱스가 생성되었습니다.

위 명령어가 일반적인 방법으로 인덱스를 생성하는 방식이다. 이렇게 생성을 하게되면 검색시 보다 빠른 속도를 확인할 수가 있다.

형식 2 및 활용_

제약조건 -> user_constraints, 뷰 -> user_views

인덱스도있다 -> user_indexes(별칭 i로 설정)(uniquness 라는 필드가 있다.), => 해당 구문은 인덱스 이름, 고유 정보가 필요.

                      user_ind_column(별칭 c로 설정) => 해당 구문은 인덱스 이름, 테이블, 필드명이 필요. 그리고 명령어가 길기에 별칭 사용이 가능하다.

                      index_name(인덱스이름)

위 두개를 사용하기엔 조인을 미리 숙지를 하고있어야한다. 위 두개의 정보를 동시에 얻기위해선 조인문을 통해 얻을수가 있기때문이다.

조인과 인덱스를 이용하여 동적인 구문을 완성해본다면,

SQL> ed
file afiedt.buf(이)가 기록되었습니다

  1  select c.index_name,c.column_name,c.column_position,i.uniqueness
  2  from user_indexes i, user_ind_columns c
  3* where c.index_name=i.index_name and c.table_name='&table_name'
SQL> /
table_name의 값을 입력하십시오: EMP
구   3: where c.index_name=i.index_name and c.table_name='&table_name'
신   3: where c.index_name=i.index_name and c.table_name='EMP'

INDEX_NAME
------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
COLUMN_POSITION UNIQUENES
--------------- ---------
PK_EMP
EMPNO
              1 UNIQUE

방금 구문에서 동적으로 입력을 받는 설정을 하였기때문에 가능한 파일로 저장하여 추후에도 사용할수 있도록 파일로 저장해놓는것도 좋은 방법이다.

SQL> save c:\webtest\2.db\print\ind_search.txt;   ==>경로는 사용자 편한 대로!
file c:\webtest\2.db\print\ind_search.txt(이)가 생성되었습니다

(필자는 중간에 upper 값을 제대로 지정하지 않아 오류가 한번 났었고, ed문을 이용 수정하였다.)

인덱스 활용 참고 사진

 

댓글