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 21897 게시물 읽기
No. 21897
inline view join을 일반 join으로 바꾸려면?
작성자
송찬의(jazzbluey)
작성일
2005-03-04 10:27ⓒ
2005-03-04 11:17ⓜ
조회수
1,641

1. line - join을 사용하는 경우

select subl_store_code
from
(
select A.store_code as subl_store_code,
B.store_code as store_store_code
from tb_inv_dsg_ext A, OUTER tb_store_do B
where A.store_code = B.store_code
)A
where store_store_code IS NULL
group by 1

 

2. sub-quary를 이용하여 hash anti join을 하는 경우

select store_code
from tb_inv_dsg_ext
where store_code not in
(select /*+ HASH_AJ */ store_code from tb_store_do );

 

3. 일반 조인을 이용한 quary

select A.store_code as subl_store_code
from tb_inv_dsg_ext A, OUTER tb_store_do B
where A.store_code = B.store_code
and B.store_code IS NULL
group by 1

1, 2의 경우는 올바른 결과가 나오는데 3의 경우는 결과가 제대로 나오지 않습니다.

어떻게 바꾸면 sub-quary, inline view없이 일반 조인을 사용하여 1, 2와 똑같은 결과를 만들 수 있을까요?

 

3에 having절을 이용하는 것은 쓸데없는 field값을 사용하여야 하므로 좋은 방식은 아닌 것 같습니다.

 

고수님들의 현명한 조언을 기대합니다.


* 참고로 tb_inv_dsg_ext 에는 primary key가 date_code, goods_code, store_code가 있고

tb_store_code 에는 primary key가 store_code가 있습니다.

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

그냥 hash-anti 조인 쓰세요

그것도 힌트주지 말고

analyze 해서 비용기반으로....

그게 가장 빠릅니다.....

굳이 outer 하시는 이유를...

protokhs님이 2005-03-04 16:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21901hot 백업시... 환경파일은 어떻게? [1]
핸시기
2005-03-04
977
21899import (임포트) 할때 다른 테이블 명으로 들어갈순 없을까요? [4]
이상훈
2005-03-04
1511
21898특정컬럼이 포함된 테이블 조회 [1]
궁금이
2005-03-04
1378
21897inline view join을 일반 join으로 바꾸려면? [1]
송찬의
2005-03-04
1641
21896[급!]동시 사용시 테이블 점유에 대해서... [3]
궁실
2005-03-04
1461
21895쿼리문을 어떻게 작성해야 할지.. [1]
이찬희
2005-03-04
1278
21894Oracle10g(Windows2003)conn / as sysdba --error??? [2]
구리구루
2005-03-04
2184
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다