스칼라 서브쿼리, 인라인 뷰, 서브쿼리

최대 1 분 소요

SELECT  A.계좌번호,
        B.고객번호,
        B.고객명,
        C.적립금,
        (
        ...           -- 스칼라 서브쿼리
        )
FROM    계좌 A
INNER JOIN
        (
        ...           -- 인라인 뷰
        )
WHERE   EXISTS
        (
        ...           -- 서브쿼리
        )
  • 스칼라 서브쿼리 : SELECT 절에서 함수처럼 한 레코드당 정확히 하나의 값만을 리턴하는 서브쿼리
  • 인라인뷰 : FROM절에서 임시 공간에 테이블을 생성하여 사용하는 뷰와 비슷한 저장형태
  • 서브쿼리 : WHERE 조건 절에서 비교형태로 사용되는 형태

스칼라 서브쿼리

동작원리

  1. 메인쿼리를 수행한 후 스칼라 서브쿼리에 필요한 값을 제공한다.
  2. 스칼라 서브쿼리를 수행하기 위해 필요한 데이터가 들어잇는 블록을 메모리로 로딩한다.
  3. 메인쿼리에서 주어진 조건을 가지고 필요한 값을 찾는다. 그리고 결과를 메모리에 입력값(main query에서 주어진 값)과 출력값(스칼라서브쿼리를 수행 후 나온 결과 값으로 메모리 내의 query execution cache 라는 곳에 저장해둔다.
  4. 다음 조건이 메인쿼리에서 스칼라 서브쿼리로 들어오면 해쉬 함수를 이용해서 해당 값이 캐쉬에 존재하는지 찾고, 있으면 즉시 결과값을 출력하고, 없으면 다시 블록을 엑세스해서 해당 값을 찾은 후 다시 메모리에 캐쉬 해둔다.
  5. 메인쿼리가 끝날 때까지 반복한다.

Note:

  • 스칼라 서브쿼리에서 2개 이상의 컬럼을 사용할 수 없다.
  • 일반적으로 음데이터의 종류와 양이 적은 코드 성격의 데이터 조인을 통해 조회 할 때만 성능이 좋음

참고 —

태그:

카테고리:

업데이트:

댓글남기기