DB/오라클

View 조건침투(condition Pushdown)

2023. 7. 12. 21:45
목차
  1. View 조건침투
  2. 조건침투
  3. View 조건침투 사용시 주의사항

이번포스팅에서는 오라클 View의 중요한 사용법 중 하나인 조건침투방법에 대해 정리해 보려 합니다.

 

View 조건침투

오라클에서 뷰(View)는 하나 이상의 테이블이나 다른 뷰를 기반으로 생성된 가상테이블입니다.

뷰를 사용할 때는 조건침투(condition Pushdown)라는 개념을 이해하는 것이 중요합니다.

 

저는 여태까지 View를 사용하면서 View안에 조건들을 미리 다 정의해 놓고 

해당 View를 사용하면 항상 같은 결과가 나오도록 사용했습니다.

(창피하네요 ㅇㅅㅇ!)

 

조건침투

쿼리에서 뷰를 사용할 때 뷰 안에 정의된 조건절이 아닌

외부쿼리에서 뷰 내부로 조건을 침투시킬 수 있습니다.

말이 어렵지만 예제를 보면 쉽게 이해가 되실겁니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--VIEW===========================
CREATE VIEW ActiveEmployees
AS
 
SELECT *
FROM Employees
WHERE IsActive = 'Y'
AND NAME = 'Mike' ;
 
--Query==========================
SELECT *
FROM ActiveEmployees ;
 
 
 
Colored by Color Scripter
cs

위의 예제는 우리가 얻고자 하는 조건을 View안에 모두 정의하고 View를 호출해서 사용하고 있습니다.

(처음에 말했던 제가 원래 View를 사용하던 방법이죠,,,)

 

View Condition Pushdown 기능을 사용하면 아래와 같이 변경할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--VIEW===========================
CREATE VIEW ActiveEmployees
AS
 
SELECT EMP_NO
      ,NAME
      ,AGE
FROM Employees
WHERE IsActive = 'Y' ;
 
--Query==========================
SELECT *
FROM ActiveEmployees 
WHERE NAME = 'Mike' ;
cs

 

첫 번째 방식은 조건값이 고정되어 있으나 두 번째는 상황에 맞게 조건값을 수정해서 조회할 수 있습니다.

 

처음에 조건침투에 대해 몰랐을 때는 두 번째 예제쿼리를 보고 이상하다고 생각했습니다.

View를 하나의 가상테이블이라고 생각했을 때 가상테이블을 만드는 Range조건이 없다!?!?!

이제라도 알게 되어서 다행이라고 생각합니다.(공부만이 살길이다)

 

옵티마이저는 View안에 정의된 쿼리와 외부쿼리에서 침투하는 조건을 이용해 실행계획을 다시 세웁니다.

즉, View안에 Range조건이 없어도 외부에서 조건침투하면 View의 성능에 문제가 없습니다.

 

View 조건침투 사용시 주의사항

아래의 Case는 View안으로 조건을 침투시킬 수 없습니다.

  • View에 침투시키려고 하는 조건의 컬럼이 View안에서 가공(DECODE, NVL, SUBSTR 등등)
    되어있는 경우
  • View에 침투시키려고 하는 조건이 View안에서 Scalar Subquery로 가공되어 있을 경우
  • View에 침투시키려고 하는 조건이 View안에서 User Defined Function으로 가공되어 있는 경우

위의 세가지 Case에 유의해서 사용하셔야 합니다.

 

 

읽어주셔서 감사합니다!

 

 

 

  1. View 조건침투
  2. 조건침투
  3. View 조건침투 사용시 주의사항
'DB/오라클' 카테고리의 다른 글
  • 오라클 Date Format정리
  • View에서 Hint사용하기
  • 대용량 문자열 CLOB저장방법
  • 오라클 대형 데이터 TYPE
Interrrupt
Interrrupt
프로그래밍, 개발, IT, 일상
Interrrupt
일상의 인터럽트
Interrrupt
전체
오늘
어제
반응형
  • 분류 전체보기 (78)
    • Programing (26)
      • C# (12)
      • WPF-FrameWork (5)
      • JavaScript (7)
      • React-FrameWork (2)
    • DB (14)
      • 오라클 (14)
    • ETC (5)
      • 기타 (4)
      • 자료구조 (1)
      • 마크업 (1)
    • Tools (4)
    • 토이프로젝트 (4)
      • C# WPF로 자동매매프로그램 만들기 (4)
    • OS (2)
      • 리눅스 (1)
      • Window11 (1)
    • CS지식 (8)
      • 프론트엔드 (4)
      • 백엔드 (4)
    • 일상 (12)
      • 취미 (3)
      • 맛집 (9)
hELLO · Designed By 정상우.
Interrrupt
View 조건침투(condition Pushdown)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.