INDEX 객체

조수경·2021년 10월 28일
0

Oracle

목록 보기
15/19

INDEX 객체

  • 검색의 효율성을 증대시키기 위한 객체
  • 데이터베이스 서버의 성능을 결정하는 요소 중 하나
  • 데이터 검색, 삽입, 변경시 해장 자료의 선택(WHERE 조건)의 효율성을 위해 사용
  • 정렬, 그룹화 등에도 사용
  • 별도의 저장공간 및 처리 프로세스 필요
  • 데이터의 삽입, 삭제가 빈번한 경우 인덱스 파일 재구성에 많은 자원 소요됨
  • 인덱스 객체의 종류
    1) UNIQUE/NON-UNIQUE INDEX
  • 중복값의 허용 여부에 따른 분류
  • UNIQUE 인덱스에서 NULL 값은 허용되나 1번만 허용(단 기본키 인덱스는 제외)
  • NON-UNIQUE INDEX에서는 중복 값 어용
    2) SINGLE/COMPOSITE INDEX
  • 인덱스 구성 칼럼의 수에 의한 분류(하나/여러개)
  • 복합 인덱스인 경우 인덱스 구성 컬럼의 수와 컬럼의 순서가 매우 중요
    3) Normal Index
  • 기본 인덱스
  • 트리(이진 Tree)구조 사용 - 모든 노드에 평균검색 시간 할당
  • 컬럼 값과 rowid(행이 저장된 물리적 주소)를 기반으로 계산된 주소 할당
    4) Bitmap Index(이진수: 0,1의 조합)
  • 컬럼 값과 rowid에 대한 이진수 조합으로 변환된 값을 주소로 사용
  • 추가, 삽입, 삭제가 빈번한 경우 비효율적
    5) Function - Based Normal Index
  • 함수가 적용된 컬럼을 대상으로 인덱스 구성
  • where 절 사용시 인덱스 구성에 사용된 함수의 구성과 같은 조건문사용이 가장 효율적 (사용형식)
    CREATE [UNIQUE|BITMAP] INDEX 인덱스명
    ON 테이블명(컬럼명,[,컬럼명,...][ASC|DESC])
    -기본은 NON-UNIQUE INDEX 임 사용예)
    CREATE INDEX IDXPROD ON PROD(PROD_NAME);
    --인덱스 이름은 IDX
    가 접두어로 붙는다.
         SELECT *
           FROM PROD
          WHERE PROD_NAME = '삼성 캠코더';
         
    **인덱스 삭제
    DROP INDEX 인덱스명;
    DROP INDEX IDX_PROD;
     사용예) 장바구니테이블에서 월/일/순번으로 데이터 검색이 자주 발생됨
            이 검색의 효율성을 높이기 위한 인덱스 구성
            
            CREATE INDEX IDX_CART
              ON CART(SUBSTR(CART_NO,5)); --5번째부터 나머지 뒤에다
              
         SELECT * 
           FROM CART
          WHERE SUBSTR(CART_NO,5) = '050300002'; 
          
          DROP INDEX IDX_CART;
          
     2) 인덱스의 재구성
     - 데이터베이스 테이블이 다른 저장공간으로 이동 된경우
     - 원본테이블에 자료의 입출력이 빈번히 발생된 직 후
     => 인덱스의 재구성이 필요
     (사용형식)
     ALTER INDEX 인덱스명 REBUILD;
     
profile
신입 개발자 입니다!!!

0개의 댓글