DBMS

[DBMS/Oracle] 인덱스(INDEX)

elog 2023. 3. 17. 18:00

[DBMS/Oracle] 인덱스(INDEX)
[DBMS/Oracle] 인덱스(INDEX)

인덱스(INDEX)

- 특정 자료의 검색효율을 높이기 위한 객체
- DB SERVER의 성능을 결정하는 요소가 검색 능력기며, SERVER의 부하를 줄여 전체 성능을 향상
- 단점
  . 생성에 시간 및 공간이 소요
  . 자료의 삽입,삭제,수정이 발생되면 인데스도 변경이 요구됨
  . 인덱스를 유지관리하는데 많은 시간이 소요
- 종류
  . Unique Index, Non Unique Index
  . Single, Composite
  . Normal, Bitmap, Function Based Normal...etc

사용형식)
  CREATE[UNIQUE|BITMAP] INDEX 인덱스명
    ON 테이블명(컬럼명[,컬럼명,...]) [ASC|DESC]

- 'UNIQUE|BITMAP' : 생성될 인덱스의 종류, 기본은 NON-UNIQUE, NORMAL INDEX 임
- '테이블명(컬럼명[,컬럼명,...])' :  인덱스가 적용될 테이블명과 인덱스 구성에 사용될 컬럼명(들) 기술
- 'ASC|DESC' : 인덱스 생성방식 기본은 ASC임

 

사용예)
  SELECT MEM_ID,MEM_NAME,MEM_ADD1||' '||MEM_ADD2
    FROM MEMBER
   WHERE MEM_REGNO2='2458323'; --p001,(0.002)

-- 인덱스 생성   
  CREATE INDEX idx_mem_regno2
      ON MEMBER(MEM_REGNO2);

-- 인덱스 삭제
  DROP INDEX idx_mem_regno2;

-- 테이블 생성
  CREATE TABLE TEMP
  AS 
    SELECT * FROM CART,BUYPROD,MEMBER;
    
  SELECT * FROM TEMP  
  
--     
  SELECT MEM_ID,MEM_NAME,CART_NO
    FROM TEMP
   WHERE MEM_REGNO2='4382532'
     AND CART_PROD='P202000003'--(0.39초)
     
  CREATE INDEX idx_temp ON TEMP(mem_id,CART_PROD);--(0.278초)
-- DROP TABLE TEMP;

**인덱스 재구성  
- 테이블의 저장위치가 변경된 경우(테이블 스페이스 변경)
- 자료의 삽입/삭제가 많이 발생된 경우 

 

(사용형식)
  ALTER INDEX 인덱스명 REBUILD

'DBMS' 카테고리의 다른 글

[DBMS/Oracle] IF문, 커서(CURSOR), 반복명령  (0) 2023.03.18
[DBMS/Oracle] PL/SQL(Procedual LANGUAGE SQL)  (0) 2023.03.18
[DBMS/Oracle] 동의어(SYNONYM)  (0) 2023.03.17
[DBMS/Oracle] 시퀀스(SEQUENCE)  (0) 2023.03.17
[DBMS/Oracle] VIEW 객체  (0) 2023.03.17