[ORACLE] DB의 INDEX

index : 원하는 정보의 위치를 빠르고 정확하게 알아낼수 있는 방법

  • 자동 생성 ( PRIMARY, UNIQUE )
  • 수동 생성( QYERY 로 생성. 근데 잘 안함 )
  1. 생성해야 좋은 경우

    • WHERE 절이나 JOIN 조건 안에 자주 사용되는 컬럼을 만들어 준다.
    • NULL 값이 많이 포함되어 있는 컬럼
    • WHERE 절이나 JOIN 조건 안에 자주 사용되는 두 개 이상의 컬럼들

  2. 생성했을 때 좋지 않은 경우

    • 테이블이 10,000개 이하일 경우
    • 테이블이 자주 갱신될 때

CREATE TABLE EMP_COPY
AS
SELECT * FROM EMPLOYEES;


ALTER TABLE EMP_COPY
ADD
CONSTRAINT PK_EMP_01 PRIMARY KEY(EMPLOYEE_ID);


-- 모든 인덱스를 확인하는 명령어
SELECT *
FROM ALL_INDEXES
WHERE INDEX_NAME IN('PK_EMP_01');

-- 강제 생성
-- 10000개가 넘었을 때 만들어주는 것이 좋다.
CREATE INDEX EMP_INDEX1
ON EMP_COPY(MANAGER_ID);

DROP INDEX EMP_INDEX1;

Comments