안녕하세요. 주말 잘보내셨나요?^^
월요일 아침부터.. 쿼리 질문드립니당 ㅎ
테이블 하나 더 있는게 중요해서... 수정했습니다 ㅜ 테이블 추가됨..
a,b,c 테이블을 조인하는데 c테이블에 idx가 a테이블에 있으면서, b테이블의 특정필드의 값이 없는 것만 가져오고 싶습니다.
구조는 대략
A테이블 |
|
B테이블 |
|
C테이블 |
idx |
idx2 |
name |
|
idx |
idx2 |
b_name |
|
idx |
|
1 |
1 |
이름1 |
|
1 |
1 |
b이름1 |
|
1 |
|
2 |
1 |
이름2 |
|
3 |
1 |
b이름3 |
|
2 |
|
3 |
1 |
이름3 |
|
4 |
1 |
|
|
3 |
|
3 |
2 |
이름33 |
|
|
|
|
|
4 |
|
4 |
1 |
이름4 |
|
|
|
|
|
|
|
4 |
2 |
이름44 |
|
|
|
|
|
|
|
5 |
1 |
이름5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
결과 |
|
|
|
|
|
|
|
|
|
idx |
idx2 |
name |
b.idx |
b.idx2 |
b_name |
|
|
|
|
2 |
1 |
이름2 |
2 |
|
|
|
|
|
|
3 |
2 |
이름33 |
3 |
|
|
|
|
|
|
4 |
1 |
이름4 |
4 |
1 |
|
|
|
|
|
4 |
2 |
이름44 |
|
|
|
|
|
|
|
결과처럼 나오길 원합니다..
a와b테이블의 구조는 동일하다고 보면됩니다..
b테이블에는 a테이블과 매칭되는 데이터가 있을수도 있고, 없을 수도 있어서 outer 조인을 했습니다..
select a.idx, a.name, b.idx, b.b_name
from a,b
where EXISTS (SELECT 'T'
FROM c
WHERE a.idx = c.idx)
a.idx = b.idx(+)
and a.idx2 = b.idx2(+)
and b.b_name is null
이런형태로 작업했는데 질문은
1. a 테이블에 데이터가 엄청 많다고 가정했을 때 퍼포먼스에 문제가 없을까요?
2. 조인 후에 조인한 테이블의 특정필드에 값이 없는 것만 가져올 경우 어떤방식으로 처리해야 좋을까요. (퍼포먼스를 1순위로..)
좋은하루 되십시요~^^