본문 바로가기

Programming/[DB]

[DB] INDEX & 동의어 & 시퀀스

INDEX

 장점

검색속도 무척빠름

시스템 전체 성능향상

 단점

데이터베이스 크기의 10% 추가공간 필요

첫 인덱스 생성에 시간 많이 소요

변경작업 자주 일어나면 오히려 성능 저하

 

 종류

BITMAP인덱스

함수 기반 인덱스

어플리케이션 도메인 인덱스

E-TREE 인덱스(OLTP)

(꼭 필요한 인덱스만 최소로 생성)

 

<자동으로 생성되는 인덱스>

- 인덱스는 테이블의 열 단위 생성

- 테이블 생성 시, 제약조건 사용하면 자동으로 인덱스 생성

 

<B-TREE 인덱스분할>

 

 

<인덱스 확인>

SELECT INDEX_NAME, LEAF_BLOCKS, DISTINCT_KEYS, NUM_ROWS FROM USER_INDEXES WHERE TABLE_NAME='USERTBL';

 

특징

인덱스 생성 시에는 데이터 블록은그냥 둔 상태에서 별도의 블록에 인덱스를 구성한다

인덱스의 리프 블록은 데이터가 아니라 데이터가 위치하는 주소값이다

데이터의 입력 수정 삭제 시 인덱스가 없을 때보다 느리다

인덱스는 여러 개 생성할 수 있다. 하지만 남용할 경우 시스템 성능을 떨어트린다

 

<인덱스 생성>

CREATE INDEX 인덱스면 ON 테이블명 (컬럼1, 컬럼2 ...);

 

삭제

DROP INDEX 인덱스명;

 

<족집게>
1.인덱스 = 검색속도향상
2.
primary key / unique 자동으로 생성
3.
인덱스는 B-tree구조
4.
생성 = create index
5.
삭제 = drop index
6.
인덱스가 있다고 oracle이 반드시 인덱스를 사용하는 것은 아니다

 

동의어

 SYNONYM

오라클 객체에 대한 대체 이름, 실질적으론 객체에 대한 직접적인 참조

 

 사용 이유

데이터베이스의 투명성 제공

다르 유저의 객체를 참조할때 많이 사용

SQL코딩을 단순화

보안 유지

 

 언제

객체의 실제 이름과 소유자, 위치를 감춤으로써 데이터베이스 보안개선 목적

 

 종류

PRIVATE SYNONYM

특정 사용자만 이용

PUBLIC SYNONYM

모든 사용자 공유

 

시퀀스

개념 이해와 생성

 오라클에서는 행을 구분하기 위해서 기본 키를 두고 있습니다. 기본키는 중복된 값을 가질 수 없으므로 항상 유일한 값을 가져야 합니다

 기본키가 유일한 값을 갖도록 사용자가 직접 값을 생성해내려면 부담이 클 것입니다

 시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이므로 시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄 일 수 있습니다.

 

START WITH

시퀀스 번호의 시작값을 지정할 때 사용됩니다. 만일 1부터 시작되는 시퀀스를 생성하려면 START WITH 1이라고 기술하면 됩니다

INCREMENT BY

연속적인 시퀀스 번호의 증가치를 지정할 때 사용됩니다. 만일 1씩 증가하는 시퀀스를 생성하려면 INCREMENT BY 1이라고 기술하면 됩니다.

MAXVALUE N | NOMAXVALUE

MAXVALUE는 시퀀스가 가질 수 있는 최대값을 지정합니다

MINVALUE N | NOMINVALUE

MINVALUE는 시퀀스가 가질 수 있는 최소값 지정

CYCLE | NOCYCLE

CYCLE은 지정된 시퀀스 값이 최대값까지 증가가 완료되게 되면 다시 START WITH 옵션에 지정한 시작 값에서 다시 시퀀스를 시작하도록 합니다. NOCYCLE은 증가가 완료되게 더되면 에러를 유발시킵니다

CACHE N | NOCACHE

 

 

데이터 딕셔너리

테이블 객체에 대한 정보를 저장하는 데이터 딕셔너리는 USER_TABLES이고 뷰 객체에 대한 정보를 저장하는 데이터 딕셔너리

 

CURRVAL : 현재 값을 반환한다

NEXTVAL : 현재 시퀀스 값의 다음 값을 반환한다

 

NEXTVAL로 새로운 값을 생성해야 CURRVAL에 새로운 값이 할당된다

 

저녁에 완성 예정

 

 

'Programming > [DB]' 카테고리의 다른 글

[DB] 보안  (0) 2018.04.23
[DB] 서브프로그램(프로시저, 패키지, 트리거)  (0) 2018.04.23
[DB] 스키마 & 파티션  (0) 2018.04.20
[DB] VIEW  (0) 2018.04.20
[DB] SUBQUERY  (0) 2018.04.20