본문 바로가기

Database

OBJECT(시퀀스, 인덱스, 뷰, ...)

OBJECT


OBJECT 종류와 기능

1. 테이블 : 행과 열의 조합으로 구성된 기본 저장단위

2. 시퀀스 : 자동으로 고유한 숫자값을 생성, 주로 기본키 값을 생성하기 위해 사용

3.인덱스 : 쿼리 속도를 향상시키는데 사용 

4.  : 논리적이고 가상적인 테이블

5. 시노님 : OBJECT 대한 또다른 이름으로 ALIAS역할

6. 프로그램 유닛 : SQL, PL/SQL문으로 작성한 Procedure, Function, Trigger, Package

 

시퀀스(Sequence)

- 자동으로 Unique number 생성 (GAP 발생가능)

- 공유가능한 Object

- 일반적으로 PK 생성을 위해서 사용

 

시퀀스 생성방법

CREATE SEQUENCE 이름

[ INCREMENT BY n] --시퀀스 번호 간의 간격 , 생략 = 1

[START WITH n] --생성되는 첫번째 시퀀스번호, 생략= 1

[MAXVALUE n | NOMAXVALUE] --생성가능한 시퀀스 최대값 , NOMAXVALUE 10^27

[MINVALUE n | NOMINVALUE] -- 생성가능한 시퀀스 최소값, NOMINVALUE 1

[CYCLE n | NOCYCLE] --

[CACHE n | NOCACHE]

시퀀스 생성 및 시퀀스로 INSERT

-NEXTVAL : Sequence 1 증가된다.

-CURRVAL : 현재 Sequence 값을 보여준다.



인덱스(Index)

- 테이블의 데이터를 빠르게 검색하기 위해 사용되는 Object이다.

- 최적화에 따라 Index 사용할지, 하지 않을지 결정한다.

 → Optimizer 판단한다. 또는 HINT INDEX 사용할지 정해줄  있다.

- 인덱스는 자동으로 생성되기도 하고, 사용자가 필요에 의해 만들수도있다.

- 인덱스는 Binary Tree 구조로 수행속도가 빠르다,

 , 삽입과 삭제가 일어날 때마다 트리구조를 새로 갱신해야된다.


인덱스의 구조

B*Tree구조를 이용. (이진트리)

인덱스는 테이블의  행에 대응하는 구조(RowID) 인덱스 컬럼값으로 구성

데이터를 저장하는 것이 아닌 RowId 저장해서 RowId 보고 데이터를 찾는다.

→ RowID : 데이터가 저장된 주소

 

B*tree 특징

 어떤 행에 대한 엑세스 횟수도 동일하게 하는 이진균형탐색 구조

 행이 테이블의 시작,중간,끝에 있어도 거의 같은 횟수내에 지정된 값을 엑세스하는 방법

 

Oracle에서 제공하는 최적화방법

 1) 규칙기준 : 내부적인 규칙에 근거하여 적절한 익덱스를 선정해 사용하는 방식

 2) 비용기준 : 통계정보를 분석하여 가장 비용이 적게드는 방식으로 결정

 

인덱스의 생성  삭제 예제

CREATE INDEX 인덱스명

ON 테이블명(컬럼 , 컬럼 , ....)

인덱스를 생성해야  경우

- 조건절이나 JOIN조건에서 컬럼을 자주 이용할때

- 컬럼이 넓은 범위 

- 많은 NULL값을 갖는 컬럼일 경우

 

VIEW

- 다른 뷰를 기초로  가상의 테이블 (읽기가 목적 - READ ONLY)

- 데이터베이스에 대한 엑세스를 제한한다.(보안상의 이유)

- 복잡한 SQL문을 통해 얻을  있는 결과를 간단한 SQL문을 써서 구할  있게 된다.

 → JOIN 것을 뷰로 만들어서 제공가능하다.

 

VIEW 생성

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW 이름 [ALIAS ,,,]

AS SubQuery..

[WITH CHEACK OPTION [CONSTRAINT 제약조건] ]

[WITH READ ONLY];

 

생성된 VIEW

- 생성된 뷰에서   있듯이 JOIN방법을 몰라도 JOIN한것처럼 뷰를 통해   있다.


 생성권한 부여