일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- miplatform
- 기타소득
- 회계
- 데이터베이스
- 마이플랫폼
- JEUS
- 튜닝
- 엑셀
- 태그를 입력해 주세요.
- 자바
- 도서
- 오류
- JavaScript
- 한글
- 톰캣
- 성능
- 오라클
- MIP
- 이클립스
- DB
- Eclipse
- 에러
- Tomcat
- java
- error
- oracle
- Report Designer
- 함수
- Book
- Excel
- Today
- Total
어느 가을날의 전환점
ORACLE|오라클 11g New Feature - Virtual Columns (가상 컬럼) 본문
가상 컬럼은 테이블에있는 하나 이상의 컬럼값을 기반으로 계산식을 적용할 수 있는 11g의 기능이다.
※ 특징
- 가상 컬럼은 데이터베이스 내의 메타데이터로 저장된다.
- 물리적인 공간을 차지 하지 않는다.
- 파티션 테이블 사용 시 마땅치 않는 컬럼이 없을 경우 가상 컬럼을 통해 적용
가능하다.
- 가상 컬럼에 인덱스(함수 기반 인덱스) 생성이 가능하며, 통계 정보 수집도
가능하다.
- 다른 테이블의 컬럼을 이용한 가상 컬럼을 생성할 수 없다.
- 가상 컬럼에는 데이터를 INSERT 할 수 없다.
이와 같은 점을 이용하면 기존 트리거를 이용하여 계산 값을 INSERT하는 작업을 제거할 수 있으며, 이로 인한 오버헤드를 줄일 수 있다.
※ 시나리오
CUSTOMER 테이블에 현재 데이터가 50 만건이 입력되어 있는 상황에서 포인트 값을 통해 고객의 등급을 결정해야된다고 가정한다.
POINT 값이 10000 미만이면 "D", 10001 이상 100000 이하이면 "C", 100001 이상 200000 이하이면 "B", 그 외에는 "A" 값이 LEVELS 컬럼에 나오도록 하는 간단한 예제이다.
1. 기존 테이블에 가상 컬럼 추가
alter table customer add
(levels varchar2(10) generated always as (
case when point <= 10000 then 'D'
when point > 10000 and point <= 100000 then 'C'
when point > 100000 and point <= 200000 then 'B'
else 'A' end) virtual);
2. 데이터 확인 및 조회
select name, reg, point, levels from customer
where point in (1, 10001, 100001, 200001);
NAME REG POINT LEVELS
---------- --------- ---------- ------
NONVXISHEN 31-OCT-13 1 D
GGZLDXCONZ 31-OCT-13 10001 C
PHCCHCKTSV 31-OCT-13 100001 B
RZIHNWCYXV 31-OCT-13 200001 A
3. 데이터 입력 및 조회
SQL> insert into customer (id, name, reg, point)
values (500001, 'JONE', sysdate, 40000);
SQL> select name, reg, point, levels from customer
where id = 500001;
NAME REG POINT LEVELS
---------- --------- ---------- ------
JONE 31-OCT-13 40000 C
LEVELS 컬럼에 데이터를 입력하지 않아도 런타임에 정의된 계산식으로 계산하여 결과
값을 보여준다.
#출처: http://www.kova.co.kr/techinfo/sub01_read.asp?fre_code=2&fre_num=1&fre_seq=1
'Database > Oracle' 카테고리의 다른 글
ORACLE|오라클 힌트(Hint) (0) | 2015.02.16 |
---|---|
ORACLE|오라클 Pipelined Table Functions (0) | 2015.02.15 |
ORACLE|오라클에서 숫자 한글(국문) 표기하기 (0) | 2014.11.27 |
ORACLE|임시 테이블(Temp Table) (0) | 2014.10.23 |
ORACLE|ORA-29275: 부분 다중 바이트 문자 Error(partial multibyte character) (0) | 2014.10.21 |