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 37861 게시물 읽기
No. 37861
서브쿼리 Vs 조인
작성자
초보
작성일
2010-08-16 20:02
조회수
5,863

안녕하세요. 초급 개발자입니다. _._)

SQL을 작성하다가 감은 오는데 확신이 안서서 질문 올립니다.

계좌현황에서 약 30건의 고객번호를 가져와서 고객명과 같이 데이터를 가져온다 했을 때

 

select   a.고객번호

            , b.고객명

from      계좌현황 a, 고객기본 b

where   a.고객번호 = b.고객번호

이렇게 조인을 하는게 나을까요?

 

select   a.고객번호

            , (select 고객명 from 고객기본 where 고객번호 = a.고객번호) as 고객명

from      계좌현황 a

이렇게 서브쿼리를 사용하는게 나을까요?

 

제 생각에는 한번에 테이블에 엑세스 하는 횟수가 적은 조인이 더 나을 것 같은데요;;

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

30건이라면 차이 없다고 보는게 좋습니다.

대용량이라면?

코드성 테이블의 경우엔 서브쿼리의 결과가 재사용되므로 효과적입니다.

계좌현황에 고객이 중복으로 많이 들어있다면?

결과 재사용율이 높아 효과적입니다.

그러나 그 효과는 제한적입니다. 고객번호의 종류가 많다면?

서브쿼리 결과가 저장되는 공간이 제한적이라 서브쿼리가 계속 실행되면서

앞서 저장되었던 자료가 메모리에서 밀려나게 되어 재사용 효과가 떨어집니다.

재사용율이 떨어지게 되면 오히려 서브쿼리가 늦을 수 있습니다.

마농(manon94)님이 2010-08-17 08:14에 작성한 댓글입니다.

경험상 대용량데이터를 join 했을때 일부데이터를 출력하기 위한건은 서브쿼리가 빨라 보입니다만

 

출력건수가 조금이라도 많아지면 서브쿼리의 효율은 극단적으로 떨어지더군요.

 

결론은 30건이면 비교가 의미가 없습니다.

암비님이 2010-08-17 09:04에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
37864alert log에 Resource Manager 몬가요???
황푸리엔
2010-08-17
2724
37863한 컬럼에 다중 제약조건 가능한가요? [1]
j1y3
2010-08-17
2923
37862전월대비 증감및 증감율 구하는 쿼리 도움 부탁드립니다. [4]
박현
2010-08-16
8638
37861서브쿼리 Vs 조인 [2]
초보
2010-08-16
5863
37860쿼리좀 봐주세요.. [1]
K씨
2010-08-16
3275
37859두 날짜 컬럼을 기간별로 조회하는 쿼리가 어떻게 될까요? [2]
정태영
2010-08-16
3407
37858index scan 이 되지 않고 있습니다. [6]
what
2010-08-16
4237
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다