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
운영게시판
최근게시물
MS-SQL Q&A 5528 게시물 읽기
No. 5528
조인 vs 서브 쿼리 관련 문의드립니다.
작성자
도와주세요
작성일
2010-01-08 14:01
조회수
6,593


Table A 사용자 정보 테이블
a_seq
a_code
a_id
a_name


Table B 과목 테이블
b_seq
b_code
b_name

1번 쿼리
select * from (
    select * from b where b_code = 3
) bt left join  a on bt.b_code = a_code

2번 쿼리
select * from b left join  a on b.b_code = a_code
where b.b_code = 3

 

제가 알고 있기론 1번과 2번 중 1번 쿼리가 비용이 더 적게 드는걸로 알고있습니다.
해서 1번 쿼리 형태로 작업을 진행하고 있는데 DB팀 담당자가 에서 왜 1번을 쓰냐 2번형태로
쓰라는 가이드 라인이 내려왔는데요.

서브 쿼리에서 검색조건을 거른후에 조인 하는게 더 쿼리가 빠르고 부하도 적지 않나요 ?
oracle 에서는 1번 형태로 썼는데...mssql은 뭐가 틀린건지..

아님 제가 잘못 알고 있는것인지;;;;

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

제 능력 밖인듯 한데요 그냥 댓글 달아 봅니다..

다들 분들도 많으실텐데...

 

1번 경우 과연 1차로 거른 결과 값들에서

다시 셀렉트 하는 건데요 이게 인덱스를 타는 건지 모르겠네요...

그리고 * 식으로 전체 필드를 select 하는거 보다는

필요한 필드만 select 하심이 더 낳을듯 싶습니다...

악마곰님이 2010-01-08 16:37에 작성한 댓글입니다. Edit

* 로 한건 걍 쿼리 일일히 다  쓰기 귀찮아서..^^;;

그리고 b_code 같은 경우에는 index가 걸려 있는 상황입니다.

서브쿼리의 경우 인덱스가 안타나요 ???????

서브쿼리에서 인덱스가 안탄다고 한다면 당연히 2번이 맞겠죠;;

음;;;;

도와주세요님이 2010-01-08 16:51에 작성한 댓글입니다. Edit

두개의 쿼리를 플랜을 떠서 비용과 각각의 쿼리플랜을 상호비교해 보시고 왜 그렇게 되는지를 생각해 보심이 좋을 듯 싶네요...데이터 분포도에 따라 다르게 생성될 수 도 있습니다.

지나가다님이 2010-01-09 01:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5533실행계획 고정시키기
배우미
2010-01-13
6357
5532프로시저내에서 프로시저호출 [2]
이종명
2010-01-13
6629
553180% 확률을 구하고 싶습니다. [1]
조중규
2010-01-12
7548
5528조인 vs 서브 쿼리 관련 문의드립니다. [3]
도와주세요
2010-01-08
6593
5527Help....MDB에서는 문제가 없는데 MS-SQL에서 안돌아가네요. [1]
사랑넷
2010-01-08
5748
5526커서안에 커서 [2]
처리
2010-01-07
6389
5525로그 파일로 복원하는 방법 [1]
초보
2010-01-06
5977
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다