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 41808 게시물 읽기
No. 41808
오라클 인라인뷰 성능 및 where 1= decode() 사용에 관한 질문입니다.
작성자
보통남
작성일
2020-07-28 09:44ⓒ
2020-07-28 10:05ⓜ
조회수
2,049

안녕하세요.  평소 지나쳤던 부분에 대해 질문이 있어서 조심스레 질문드립니다.

 

 1. select from (select from ( select 해서
인라인뷰를 많이 쓴 sql이 과연 욕을 먹어야될까요? 최초 인라인뷰가 집계성이거나 그룹핑을 해서 대상이 확 줄어든 상태라면 성능에 큰 차이도 없고 들여쓰기 잘해놓은게 가독성면에서도 좋지 않나요?

2. 제가 알기로 인라인뷰가 대상이 커서 메모리에서 처리 못 하면 그 때 temp table에서 처리하는 걸로 알고 있습니다. 맞나요?

3. 인라인뷰를 사용하면 temp table은 항상 생성되나요? 메모리에서만 처리할 경우 해당 table은 할당만 된 상태로 트랜젝션이 종료되면 반환 받는 걸로 알고 있습니다.

4. UI에서 조회 조건이 다양하게 들어올 경우 기존 원쿼리로 되어 있는 것을 union 으로 쪼개고 where문에 1=decode() 로 바인드변수값에 따라 쿼리 컨트롤을 하면서 최적화된 힌트문을 주는 것으로 튜닝하는 것을 많이 봤는데 이는 잘못된 방식인가요?

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

1. 쿼리 성능은 인라인뷰를 많이 쓰고 안쓰고에 달린게 아니라, 어느정도로 효율성 있게 쿼리를 작성했냐에 따라서 나옵니다. 

 

2. 인라인뷰 처리도 인라인뷰를 먼저 처리하는 경우도 있고 merge 등이 발생하는 경우도 있습니다. 오라클의 temp 테이블 스페이스는 많은 쿼리에서 사용되는 공동 임시 작업영역이라고 생각하면 됩니다. 메모리에서 모든걸 처리하는지 등등은 trace 를 보면 정확히 알 수 있습니다. (수백, 수천라인의 복잡한 쿼리는 실행계획보다는 trace 를 보는게 좋습니다.) 

 

3. temp 테이블스페이스를 사용하는 쿼리를 찾을 수도 있긴 합니다만, 대부분은 top 쿼리 내지는 큰 배치 쿼리가 많이 사용합니다. 그런 쿼리를 튜닝하면 문제가 해결되는 경우가 많습니다. temp 테이블스페이스를 많이 늘렸는데, 문제가 안된다면 늘리는게 낫습니다. (관련 ORA- 에러를 보는것보다는 늘리는게 나을겁니다) - 계속 늘리는 상황이라면, 문제 쿼리들을 찾아서 튜닝 해야하구요. 

 

4. 인덱스 사용컬럼이 가공되면, 인덱스를 타지 않습니다. 변수값 넣고 해보시면 실행계획으로도 확인할 수 있습니다. (case, decode 의 경우 인덱싱은 오라클 FBI 활용을 검토하세요) 

 

 

==> 수행시간 buffer get 등을 줄이는 것은 튜닝의 영역입니다. 실행계획과 trace 를 정확히 확인하시고 튜닝하시면, 해결 될 것 같습니다. 

 

lucky님이 2020-07-29 12:49에 작성한 댓글입니다.
이 댓글은 2020-07-29 12:53에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41812상품정보 Cleansing 자료 추출 쿼리좀 부탁드리겠습니다. [2]
Airman
2020-09-10
1740
41810쿼리 질문좀 드려도 될가요?
염정훈
2020-08-21
1795
41809oracle 10g 설치 오류 [1]
장현옥
2020-08-19
5057
41808오라클 인라인뷰 성능 및 where 1= decode() 사용에 관한 질문입니다. [1]
보통남
2020-07-28
2049
41807오라클에서 마스킹 처리 확인 부탁드립니다. [2]
김세익
2020-07-24
7127
41806ORA-01465 : 16진수의 지정이 부적합합니다 [3]
어거스트
2020-07-21
3680
41805두행의 차이값 계산하는 쿼리 [2]
궁금
2020-07-21
2328
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.054초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다