SELECT MAX(주문번호) + 1
FROM :V_주문일련번호
FROM 주문 ;
INSERT INTO 주문(주문일련번호, COL2, COL3...)
VALUES ( V_주문일련번호, 'XXX','XXX'...);
INSERT INTO 주문(주문일련번호, COL2, COL3... )
SELECT DECODE(MAX(주문일련번호), NULL, 0, MAX(주문일련번호))+1 주문일련번호, :COL2값...
FROM 주문
INSERT INTO 주문(주문일련번호, COL2, COL3... )
SELECT DECODE(MAX(주문일련번호), NULL, 0, MAX(주문일련번호))+1 주문일련번호, :COL2값...
FROM 주문
WHERE 지점코드 ='XX'
AND 주문일자 ='2002-01-01
-- WHERE 절을 통해서 충분하게 값을 걸러주어 MAX 부하를 줄인다.
CREATE SEQUECNE 주문_SEQ
INCREMENT BY 1 ;
INSERT INTO 주문( 주문일련번호, COL2, COL3 ... )
VALUES ( 주문_SEQ.NEXTVAL, 'XXX','XXX'...);
1) 신규 일련번호 채번 ( FOR UPDATE ~ )
SELECT 최종일련번호 + 1
INTO :V_주문일련번호
FROM 주문
WHERE 지점코드 ='01'
AND 주문구분 ='인터넷';
2) 본 테이블에 데이터 입력
INSERT INTO 주문(주문일련번호, COL2, COL3... )
VALUES (V_주문일련번호, 'XXX','XXX'...);
3) 채번 테이블 수정
UPDATE 주문채번테이블
SET 최종일련번호 = :V_주문일련번호
WHERE 지점코드 = '01'
AND 주문구분 = '인터넷'
INSERT INTO 주문(주문일련번호, COL2, COL3... )
SELECT /*+ INDEX_DESC(B i_01) */ <-- 인덱스 i_01 일때 인덱스를 역정렬함
DECODE(MAX(주문일련번호), NULL, 1, 주문일련번호+1), 'XXXX','XXX'...
FROM 주문 A,
( SELECT 0 SER FROM DUAL ) B
WHERE A.주문일련번호 = B.SER(+) <-- 데이타가 하나도 없을 때 채번하기 위함
AND ROWNUM = 1 ;
sys@ARTDOM>analyze index scott.BIG_INDEX estimate statistics ;
Index analyzed.
sys@ARTDOM>alter session set db_file_multiblock_read_count=256;
Session altered.
sys@ARTDOM>alter session set sort_area_retained_size=100000000;
Session altered.
sys@ARTDOM>alter session set sort_area_size=100000000;
Session altered.
sys@ARTDOM>analyze index scott.BIG_INDEX estimate statistics ;
Index analyzed.
sys@ARTDOM>select blevel, leaf_blocks from dba_indexes where index_name ='BIG_INDEX';
BLEVEL LEAF_BLOCKS
---------- -----------
1 230
sys@ARTDOM>alter index scott.big_index rebuild ;
Index altered.
- 강좌 URL : http://www.gurubee.net/lecture/4176
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.