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 41220 게시물 읽기
No. 41220
left join 시 조건
작성자
궁금이
작성일
2016-08-25 17:04
조회수
6,031

CREATE TABLE INFO_TABLE (

INFO_F1 VARCHAR2(10),

INFO_F2 VARCHAR2(20),

INFO_F3 VARCHAR2(20),

COMM_CODE VARCHAR2(10)

)

 

CREATE TABLE CODE_TABLE (

GROUP_CODE VARCHAR2(10),

COMM_CODE VARCHAR2(10),

COMM_NAME VARCHAR2(20)

)

 

INFO_TABLE PRIMARY KEY(INFO_F1)

CODE_TABLE PRIMARY KEY(GROUP_CODE, COMM_CODE)

 

-- 1번

SELECT

A.INFO_F1,

A.INFO_F2,

A.INFO_F3,

B.COMM_CODE,

B.COMM_NAME

FROM INFO_TABLE A

LEFT JOIN (SELECT * FROM CODE_TABLE WHERE GROUP_CODE = 'TEST') B ON (A.COMM_CODE = B.COMM_CODE)

 

-- 2번

SELECT

A.INFO_F1,

A.INFO_F2,

A.INFO_F3,

B.COMM_CODE,

B.COMM_NAME

FROM INFO_TABLE A

LEFT JOIN CODE_TABLE ON (A.COMM_CODE = B.COMM_CODE AND B.GROUP_CODE = 'TEST')

 

-- 3번

SELECT

A.INFO_F1,

A.INFO_F2,

A.INFO_F3,

B.COMM_CODE,

B.COMM_NAME

FROM INFO_TABLE A

LEFT JOIN CODE_TABLE ON (A.COMM_CODE = B.COMM_CODE)

WHERE B.GROUP_CODE = 'TEST'

 

위의 1, 2, 3 쿼리중 어느 쿼리가 가장 좋은 쿼리 인가요?

 

 

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

1 번은 불필요한 인라인뷰를 사용했으므로 2번으로 바꾸는게 맞구요.
3번은 아우터 조인을 했으나 조건으로 걸러냈으므로 이너조인이나 마찬가지입니다.
즉, 2번과 3번은 다른 쿼리입니다.


아우터 조인의 필요성 검토는 하셨나요?
아우터 조인이 필요 없는데도 2번처럼 쓰면 안되구요.
테이블의 코드값이 널이 들어가지 않고 코드테이블을 외래키로 참조한다면?
아우터 조인을 쓸 이유가 없습니다.

마농(manon94)님이 2016-08-25 17:48에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41223양쪽방향에 따른 계산 그리고 결과(도와주세요) [10]
기쁨이
2016-08-26
6929
41222oracle procedure subquery 사용 [2]
김정환
2016-08-26
6176
41221오라클 프로시저에서 in 변수로 던진값 사용법문의입니다 [1]
초보자
2016-08-26
6464
41220left join 시 조건 [1]
궁금이
2016-08-25
6031
41219outer join 질의 [1]
홍도영
2016-08-25
6149
41218도와주세요 [1]
울산
2016-08-23
5905
41216SQL 질문요~ [1]
바라기
2016-08-19
5968
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다