database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38442 게시물 읽기
No. 38442
동일한 구조로 된 두 테이블간의 여집합 데이터 insert 작업
작성자
mongmong
작성일
2011-03-17 14:34
조회수
6,894

각 3천만건의 동일한 구조의 TABLE  A , B
PK = P1 + P2 + P3

목적 : B 테이블에 존재하고,  A 테이블에 존재하지 않는 행을 A테이블에 insert.

1.
   insert into A
   (select * from B
    minus
    select  * from A);

minus 이용시 sort 를 수행함에 따라 temp tbs (10G) 부족으로  full 이 되어 sql 실패합니다.

2.
insert into A 
   select * from B
    where not exists (select * from A, B 
        where  A.P1 = B.P1 ...);

2번과 같이  KEY값(인덱스컬럼)만을 비교하는 not exits 를 사용하는 SQL은 어떻게 작성해야 할까요? 

그 외 대용량 테이블간 데이타를 비교할 수 있는 적절한 방안에 대해 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

-- 1. Outer Join & Null Check
SELECT b.*
  FROM a, b
 WHERE a.p1(+) = b.p1
   AND a.p2(+) = b.p2
   AND a.p3(+) = b.p3
   AND a.p1 IS NULL
;


-- 2. Not Exists
SELECT * FROM b
 WHERE NOT EXISTS (SELECT * FROM a
                    WHERE a.p1 = b.p1
                      AND a.p2 = b.p2
                      AND a.p3 = b.p3
                   )
;


-- 3. Not In
SELECT * FROM b
 WHERE (p1, p2, p3) NOT IN (SELECT p1, p2, p3 FROM a)
;


-- 4. Merge Into
MERGE INTO a
USING b
ON (a.p1 = b.p1
AND a.p2 = b.p2
AND a.p3 = b.p3)
WHEN NOT MATCHED THEN
INSERT
VALUES(b.p1, b.p2, b.p3, ...)
;

마농(manon94)님이 2011-03-18 10:46에 작성한 댓글입니다.

마농님 답변 주셔서 고맙습니다.

mongmong님이 2011-03-21 09:24에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3844864비트 windwos2008Server에 오라클 64비트/32비트 설치
Help!
2011-03-17
4136
38445쿼리 질문 올립니다. 답변좀 부탁드릴게요 [1]
쿼리질문
2011-03-17
4320
38443[질문]참조키 분석을 한꺼번에 볼수 있는지요
안동석
2011-03-17
3660
38442동일한 구조로 된 두 테이블간의 여집합 데이터 insert 작업 [2]
mongmong
2011-03-17
6894
38441공휴일을 제외한 일수 계산하기 [1]
도와주세요
2011-03-16
13121
38440테이블명으로 lock 잡고 있는 세션 찾을수 있나요? [2]
오라클 왕초보
2011-03-16
8516
38439connect by 쿼리 질문입니다.
sql초보
2011-03-16
4424
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다