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 41756 게시물 읽기
No. 41756
쿼리속도 질문
작성자
아폴론(apollon)
작성일
2019-09-20 11:24
조회수
476

select field1,field2..

from

(

 select firld1,field2...from table1 --row 약 50만건

 ---ⓐwhere field1 = '201901' and field2 = '0000'

 union all

 select firld1,field2...from table2 --row 약 50만건

 ---ⓑwhere field1 = '201901' and field2 = '0000'

 ..                                     table3

 ..                                     table4

)

ⓒ where field1 = '201901' and field2 = '0000'

 

질문: 위처럼 where절을 ⓐ.ⓑ처럼 각 테이블마다 주는것은  소스가 길~어저서  별로 하고 싶지 않습니다

그러나 ⓐ.ⓑ를 빼면 50만건+ 50만건 ..  의 데이터를 다 가져 온 후  ⓒ에서 걸러 지게 되나요?

 

그래서 ⓐ.ⓑ 안쓰고  ⓒ처럼 사용 할 때

쿼리 속도, 효율면에서 어떤가요?

 

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

범위를 줄일 수 있는 where 절은
a, b 자리에 적으시기 바랍니다. 

인라인뷰를 먼저 호출하고 
그 다음에 
인라인뷰 밖의 where 를 호출합니다. 

lucky님이 2019-09-23 13:53에 작성한 댓글입니다. Edit

UNION ALL 의 경우
조건을 밖에서 한번만 적어줘도
쿼리변환을 통해 각각의 쿼리에 조건이 침투될 가능성이 있습니다.
실제로 그렇게 동작할지 안할지는 실행계획을 확인해 보셔야 합니다.

마농(manon94)님이 2019-09-23 18:02에 작성한 댓글입니다.
이 댓글은 2019-09-23 18:03에 마지막으로 수정되었습니다.

일반적으로는 인라인 안의 where 를 읽습니다. 
그리고 테이블만 바뀌고 where 은 같은 경우 
실행계획을 살펴보아야하겠죠. 
쿼리 변환을 통한 실행계획 변경은
트레이스 확인도 해보아야 합니다. 

lucky님이 2019-09-24 09:14에 작성한 댓글입니다. Edit

lucky님, 마농님 답변 감사합니다.

인라인뷰 안의 where절 부터 호출 되는군요..
잘 알겠습니다.

감사합니다

아폴론(apollon)님이 2019-09-30 22:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41759로또 번호 카운트 쿼리좀 부탁드립니다 ㅠ.ㅠ [3]
민수홍
2019-09-23
455
41758SELECT절에 별칭.* 무슨의미에요? [1]
star
2019-09-22
440
41757oracle database numeric(p,q) 질문이요!
질문질문!!
2019-09-21
336
41756쿼리속도 질문 [4]
아폴론
2019-09-20
476
41755파티션테이블의 테이블 스페이스 변경 방법 좀 알려주세요.
궁금해
2019-09-20
330
41754오라클 12c에서 생성 가능한 파티션 테이블 개수 [2]
차차
2019-08-26
541
41753쿼리 조언좀 구하고 싶습니다ㅠㅠ [1]
rkskekfk
2019-08-19
538
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.074초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다