180312 Oracle 시퀀스 & 인덱스 - RYUDONGJIN/Memo_wiki GitHub Wiki

시퀀스

  • 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이므로 시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있음
  • START WITH : 시퀀스 번호의 시작값을 지정할 때 사용
  • INCREMENT BY : 연속적인 시퀀스 번호의 증가치를 지정할 때 사용
  • MAXVALUE : 시퀀스가 가질 수 있는 최대값
  • MINVALUE : 시퀀스가 가질 수 있는 최소값
  • CYCLE : 지정된 시퀀스 값이 최대값까지 증가가 완료하면 다시 START WITH 옵션에 지정한 시작 값에서 다시 시퀀스를 시작하도록 함
  • CACHE : 메모리 상의 시퀀스 값을 관리하도록 하는 것. 기본 값은 20
CREATE SEQUENCE dept_deptno_seq
increment by 10
start with 10;

CURRVAL

  • 시퀀스의 현재 값을 반환

NEXTVAL

  • 현재 시퀀스 값의 다음 값을 반환
SELECT dept_deptno_seq.nextval FROM dual;

SELECT dept_deptno_seq.currval FROM dual;

INSERT INTO emp01
VALUES (emp_seq.nextval, 'julia', sysdate);

시퀀스 수정

  • ALTER SEQUENCE sequence_name

인덱스

  • SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체
  • 인덱스는 빠른 검색을 위해서 사용한다.
  • 인덱스는 기본 키나 유일 키와 같은 제약 조건을 지정하면 따로 생성하지 않더라고 자동으로 생성
  • 기본 키나 유일 키는 데이터 무결성을 확인하기 위해서 수시로 데이터를 검색하기 때문에 빠른 조회를 목적으로 오라클에서 내부적으로 해당 컬럼에 인덱스를 자동으로 생성하는 것

인덱스의 장점

  • 검색 속도가 빨라진다
  • 시스템에 걸리는 부하를 줄여서 시스템 전체 성능을 향상

인덱스 단점

  • 인덱스를 위한 추가적인 공간이 필요
  • 인덱스를 생성하는데 시간이 걸림
  • 데이터의 변경작업이 자주 일어날 경우에는 오히려 성능이 저하
CREATE INDEX index_name
ON table_name (column_name);

DROP INDEX index_name

고유 | 비고유 인덱스

  • 고유 인덱스(유일 인덱스)는 기본키나 유일키처럼 유일한 값을 갖는 컬럼에 대해서 생성하는 인덱스
  • 비고유 인덱스는 중복된 데이터를 갖는 컬럼에 대해서 인덱스를 생성하는 경우
- 고유 인덱스 설정
CREATE UNIQUE INDEX index_name
ON table_name(column_name);

결합 인덱스

  • 두 개 이상의 컬럼으로 인덱스를 구성하는 것

함수 기반 인덱스

  • SELECT문 WHERE절에 산술 표현 또는 함수를 사용하는 경우 인덱스를 만들어 검색조건으로 사용