스칼라 서브쿼리, 인라인 뷰, 서브쿼리
SELECT A.계좌번호,
B.고객번호,
B.고객명,
C.적립금,
(
... -- 스칼라 서브쿼리
)
FROM 계좌 A
INNER JOIN
(
... -- 인라인 뷰
)
WHERE EXISTS
(
... -- 서브쿼리
)
- 스칼라 서브쿼리 : SELECT 절에서 함수처럼 한 레코드당 정확히 하나의 값만을 리턴하는 서브쿼리
- 인라인뷰 : FROM절에서 임시 공간에 테이블을 생성하여 사용하는 뷰와 비슷한 저장형태
- 서브쿼리 : WHERE 조건 절에서 비교형태로 사용되는 형태
스칼라 서브쿼리
동작원리
- 메인쿼리를 수행한 후 스칼라 서브쿼리에 필요한 값을 제공한다.
- 스칼라 서브쿼리를 수행하기 위해 필요한 데이터가 들어잇는 블록을 메모리로 로딩한다.
- 메인쿼리에서 주어진 조건을 가지고 필요한 값을 찾는다. 그리고 결과를 메모리에 입력값(main query에서 주어진 값)과 출력값(스칼라서브쿼리를 수행 후 나온 결과 값으로 메모리 내의 query execution cache 라는 곳에 저장해둔다.
- 다음 조건이 메인쿼리에서 스칼라 서브쿼리로 들어오면 해쉬 함수를 이용해서 해당 값이 캐쉬에 존재하는지 찾고, 있으면 즉시 결과값을 출력하고, 없으면 다시 블록을 엑세스해서 해당 값을 찾은 후 다시 메모리에 캐쉬 해둔다.
- 메인쿼리가 끝날 때까지 반복한다.
Note:
- 스칼라 서브쿼리에서 2개 이상의 컬럼을 사용할 수 없다.
- 일반적으로 음데이터의 종류와 양이 적은 코드 성격의 데이터 조인을 통해 조회 할 때만 성능이 좋음
참고 —
댓글남기기