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 34958 게시물 읽기
No. 34958
NOT EXISTS 에 대해서...A , B 테이블에서 B 테이블에 존재 하지 않는 데이터를 뽑을때...
작성자
행동하자
작성일
2008-12-15 13:13
조회수
3,847

안녕하세요.



A , B 테이블에서 B 테이블에 존재 하지 않는 데이터를 뽑을때...



조건 1)

NOT EXISTS( select  1

            from    B

            where   B.CODE = A.CODE)


조건 2)

NOT EXISTS( select  1

            from    B

            where   B.CODE = A.CODE

            and     rownum = 1)



처음에는 조건 1로 해서 뽑으니 속도가 너무 안 나와서 조건 2로 변경했습니다.


이렇게 했을때 과연 결과는 같을까요? 아니 결과는 요구한 조건을 만족 할까요?

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

성능(속도)면에서는 동일합니다.
결과도 동일합니다.

전후사정을 모르지만 성능이 문제를 말하는것으로 미루어보아.

1. B테이블의 CODE컬럼으로 시작되는 인덱스가 없거나
   --> 해결안) 인덱스 추가

2. B가 코드성 테이블이고 A쪽이 내역성(건수가 많은)이라면
   --> ANIT JOIN으로 유도 하시거나

EX1 )
select *
from tableA
where CODE not in (
  select /*+ hash_aj(tableB) */
      code
  from tableB
);


--> outer JOIN AND NULL을 활용하시면 될것 같네요. (이름은 제마음대로 정했음)
EX2 )
select /*+ use_hash(a b) */
         *
from tableA,
       tableB,
where a.code = b.code(+)
and    b.code is null

DOL님이 2008-12-15 15:26에 작성한 댓글입니다.
이 댓글은 2008-12-15 15:27에 마지막으로 수정되었습니다. Edit

DOL님 감사합니다. (__)

행동하자님이 2008-12-18 13:42에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
34967수식계산..? [1]
MR강
2008-12-15
2245
34966매 시간마다 30분 단위로 통계를 내고 싶은데... [1]
박문로
2008-12-15
4630
34965쿼리부탁드립니다(남은 휴일수계산) [4]
초보자
2008-12-15
3164
34958NOT EXISTS 에 대해서...A , B 테이블에서 B 테이블에 존재 하지 않는 데이터를 뽑을때... [2]
행동하자
2008-12-15
3847
34957여러개의 칼럼을 하나의 primary key로 지정하고 싶은데요. [4]
유재훈
2008-12-14
2573
34956전년대비를 어떻게 구해야할까요? [1]
궁금이
2008-12-14
2164
34955[질문] 중대용량 테이블 설계 및 LIKE 쿼리 튜닝 [3]
삼류
2008-12-14
3547
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다