본문 바로가기
Programming/Database

데이터베이스8 : 인덱스와 시퀀스

by 공부합시다홍아 2020. 6. 10.

객체 종류

데이터베이스를 위한 데이터를 저장한 데이터 사전

데이터 사전

오라클 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉩니다. 
사용자테이블은 데이터베이스를 통해 관리할 데이터를 저장하는 테이블을 뜻한다.

데이터사전에는 데이터베이스 메모리/성능/사용자/권한/객체 등 오라클 데이터베이스 운영에 중요한 데이터가 보관되어 있습니다. 따라서 오라클 데이터베이스는 사용자가 데이터 사전 정보에 직접 접근하거나 작업하는 것을 허용하지 않습니다. 
그 대신 데이터 사전 뷰를 제공하여 SELECT문으로 정보 열람을 할 수 있게 해두었습니다.

데이터 사전 뷰는 용도에 따라 다음과 같은 접두어를 지정하여 분류합니다.
USER_XXXX : 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보
- ALL _ XXXX : 현재 데이터베이스에 접속한 사용자가 소유한 객체 또는 다른 사용자가 소유한 객체 중 사용 허가를 받                      은 객체, 즉 사용 가능한 모든 객체 정보
DBA _ XXXX : 데이터베이스 관리를 위한 정보
V$ _ XXXX : 데이터베이스 성능 관련 정보

 

더 빠른 검색을 위한 인덱스

인덱스

책에서 특정 단어 또는 내용이 있는 페이지를 찾으려면 두 가지 방법을 생각할 수 있습니다.
책을 처음부터 끝까지 읽어보며 찾을 수도 있고, 책의 목차나 색인을 통해 찾으려는 단어가 있는 페이지를 바로 찾을 수 있다.
찾는 속도를 생각한다면 책의 모든 페이지를 읽어서 찾는 것보다 목록이나 색인을 활용하여 찾는 것이 빠르다. 그리고 책의 내용이 많아질수록 속도 차이는 더욱 커집니다. 

색인이라는 뜻의 인덱스는 책 내용을 찾는 것과 마찬가지로 오라클 데이터베이스에서 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 뜻합니다. 테이블에 보관된 특정 행 데이터의 주소, 즉 위치 정보를 책 페이지처럼 목록으로 만들어 놓은 것이다. 인덱스는 테이블 열을 여러 가지 분석을 통해 선정하여 설정할 수 있습니다. 

인덱스 사용 여부에 따라 데이터 검색 방식을 Table Full Scan, Index Scan으로 구분합니다. 
Table Full Scan : 테이블 데이터를 처음부터 끝까지 검색하여 원하는 데이터를 찾는 방식 
Index Scan :인덱스를 통해 데이터를 찾는 방식 

- 단일 인덱스 ( Single Index )

  : CREATE INDEX IDX_NAME ON EMP();

- 결합 인덱스, 복합 인덱스

   : CREATE INDEX IDX_NAME ON EMP(---,---);

- 고유 인덱스

   : CREATE UNIQUE INDEX IDX_NAME ON EMP(-----);

- 함수 기반 인덱스

   : CREATE INDEX IDX_NAME ON EMP(--- * 12 + ----);

- 비트맵 인덱스

   : CREATE BITMAP INDEX IDX_NAME ON EMP(---);

 

 

규칙에 따라 순번을 생성하는 시퀀스

시퀀스 ( SEQUENCE )

: 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체이다. 

시퀀스 생성
CREATE SEQUENCE 시퀀스 이름 
[ INCREMENT BY n ]
[ START WITH n ]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NO CYCLE ]
[ CACHE n | NOCACHE ]

INCREMENT : 시퀀스에서 생성할 번호의 증가 값
START WITH : 시퀀스에서 생성할 번호의 시작 값
MAXVALUE : 시퀀스에서 생성할 번호의 최댓값 지정
MINVALUE : 시퀀스에서 생성할 번호의 최솟값 지정
CYCLE : 시퀀스에서 생성한 번호가 최댓값에 도달 했을 경우 CYCLE이면 시작값에서 다시 시작
CACHE : 시퀀스가 생성할 번호를 메모리에 미리 할당해 놓은 수를 지정

 

 

기존 형성되어 있는 시퀀스에 내용 삽입

 

시퀀스를 사용할 때 [시퀀스 이름.CURRVAL]과 [시퀀스 이름.NEXTVAL]을 사용할 수 있습니다.

- CURRVAL : 시퀀스에서 마지막으로 생성한 번호를 반환하며 NEXT VAL는 다음 번호를 생성합니다. 

 

시퀀스 수정

 

시퀀스 삭제

 

 

728x90

'Programming > Database' 카테고리의 다른 글

Oracle Database 설치 및 동작 확인  (0) 2023.11.30
데이터베이스 9 : 제약조건  (0) 2020.06.11
데이터베이스7  (0) 2020.06.05
데이터베이스 6  (0) 2020.06.03
데이터베이스 : 중간 연습  (0) 2020.06.02