내가 보려고 정리한 DB

[데이터베이스] 서브쿼리

nacastle 2020. 5. 13. 14:20

1. 스칼라 서브쿼리: SELECT 절에서 함수처럼 사용되는 쿼리

(개념 참고, 예제 참고)

 

스칼라 서브쿼리의 캐싱 효과

오라클은 스칼라 서브쿼리의 수행횟수를 최소화하려고 그 입력값과 출력값을 내부 캐시에 저장해 둔다.

즉, 스칼라 서브쿼리가 수행될 때, 먼저 입력값을 캐시에서 찾아보고 있으면 그에 상응하는 출력값을 리턴하고, 없으면 그때서야 스칼라 서브쿼리를 실행한다.

 

그냥 사용자 정의 함수를 사용하게 되면 ROW마다 함수가 호출된다.

하지만 스칼라 서브 쿼리를 사용하면 스칼라 서브쿼리 조건 내 나타나는 컬럼을 기준으로 그 컬럼의 레코드 수만큼 쿼리를 수행한다.

 

ex)

SELECT DEPTNO, ENAME, JOB, SAL,
    (SELECT ROUND(AVG(SAL),0) FROM EMP S WHERE S.JOB = M.JOB) AS JOB_AVG_SAL

FROM EMP M

ORDER BY JOB;

 

 

 

 

 

2. 인라인뷰: FROM절에서 임시 공간에 테이블을 생성하여 테이블처럼 사용하는 형태

 

3. 서브쿼리: WHERE 조건 절에서 비교형태로 사용되는 형태

반응형