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 38577 게시물 읽기
No. 38577
조회시 * 사용
작성자
궁금이
작성일
2011-06-01 16:55
조회수
3,434

안녕하세요.

row수가 좀 많은 슬로우 쿼리가 있는데요. 테이블 조인도 많이 걸려있구요.

테이블 조인을 걸면서 testb 로 안쓰고 (select * from testb) 이렇게 하면 속도에 차이가 있을까요?

select a.aaa, b.bbb

from test a, (select * from testb) b

where a.aaa = b.bbb(+)

그리고

select *

from test a, (select * from testb) b

where a.aaa = b.bbb(+)와

select a.aaa, b.bbb

from test a, (select * from testb) b

where a.aaa = b.bbb(+)

컬럼을 명시했을때와 *를 사용했을때의 차이도 알고 싶습니다.

부탁드립니다.

 

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

다음 두가지는 차이가 없습니다. 똑같이 동작합니다.
1. FROM test a, (SELECT * FROM testb) b
2. FROM test a, testb b
오라클은 복잡한 쿼리를 단순하게 바꿔 실행합니다.
이를 Query Transformation 이라고 합니다.
1번 쿼리는 2번과 같이 단순하게 변경이 되어 실행됩니다.


다음 두가지는 차이가 있습니다.
1. SELECT *
2. SELECT a.aaa, b.bbb
어차피 읽어들이는 양에서는 차이가 없겠지만
출력하는 양에서 차이가 발생하겠지요.
네트웍을 통해 데이터를 전송한다면 필요한 데이터만 명시하는게 좋겠죠.
또, 만약에 위에 명시한 컬럼들이 인덱스 컬럼이라면?
테이블을 읽을 필요없이 인덱스 스캔만으로도 원하는 결과를 얻을 수 있습니다.
이때엔 두 쿼리는 상당한 성능 차이가 있습니다.

마농(manon94)님이 2011-06-02 08:37에 작성한 댓글입니다.

1. SELECT *
2. SELECT a.aaa, b.bbb

 

a 테이블에는 aaa, b 테이블에는 bbb 컬럼 한개씩만 가지고 있을때도 엄연한 차이가 있습니다.

* 을 사용 하면 -> a.aaa, b.bbb 찾아 내야 하죠.

a.aaa, b.bbb 찾을 필요 없죠.

저 찾는 과정을 오라클 옵티마이져가 해줍니다. 옵티마이저가 부담을 줄일려면 엄연히 컬럼 지정을 해줘야 하는게 맞습니다.

허재영(k26187116)님이 2011-06-03 11:29에 작성한 댓글입니다.

두분 모두 너무 감사합니다.

오랜 궁금증이 풀렸어요.^^

 

 

궁금이님이 2011-06-08 10:19에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38581시청률 조사 쿼리 (시작/종료 세로를 가로로 출력) [2]
박병준
2011-06-03
4522
38579View Table 만들 때... [1]
아폴론
2011-06-02
2914
38578연속 체크된 휫수조회? [1]
모노
2011-06-02
3112
38577조회시 * 사용 [3]
궁금이
2011-06-01
3434
38576프로시저 스크립트 내에서 자신의 프로시저명(이름) 구하는 방법
한동훈
2011-06-01
3262
38575오라클 설치시 out of memory 가 뜹니다... [1]
설치에러..
2011-05-31
4561
38574순차적으로 증가하는 값으로 trigger 생성하기 [4]
김홍찬
2011-05-29
5673
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다