사용되지 않는 code 조회 0 2 454

by sql [SQL Query] code [2021.03.19 14:56:38]


mdm code 중 사용되지 않는 code  를 뽑아내려 합니다.

예) 테이블 mdm , A, B, C 가 있을때 mdm의 code 가 테이블 A,B,C 모두에서 사용되지 않는 걸 뽑고 싶습니다.

mdm 

key name
1 one
2 two
3 three

A 테이블 

a_key key
a1 1
a2 2
a3 1

B 테이블 

b_key key
b1 1
b2 2

C 테이블 

c_key key
c1 1
c2 2

select *

from mdm m

where not exists (selec 'x' from A where a.a_key = m.key and rownum = 1)

and not exists (selec 'x' from A where b.b_key = m.key and rownum = 1)

and not exists (selec 'x' from A where c.c_key = m.key and rownum = 1)

 

이렇게 했더니 너무 느려서 다른 방법을 찾고 싶어 문의드립니다.

(사용되지 않는 code 3)

A,B,C 의 테이블 의 데이터가 매우 많은 경우입니다.

감사합니다.

 

by 마농 [2021.03.19 15:46:19]

1. 쿼리 맞나요? 조건절이 틀렸는데요?
- 오류 : a.a_key = m.key
- 수정 : a.key = m.key
2. a, b, c 의 데이터가 많을 경우에 효율적으로 사용할 수 있는 방법이 Exists 입니다.
- 다만 각 테이블의 key 항목에 인덱스 필수 입니다.
- 인덱스가 있는지 확인해 보세요.
3. Exists 서브쿼리 에서는
- 굳이 rownum 은 안써도 됩니다.


by sql [2021.03.19 15:53:02]

답변 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입