서브쿼리는 select, from, where중 어디에 들어가는가에 따라 이름이 달라진다. 그 중 select 절에 붙는 서브쿼리를 스칼라 서브쿼리라고 한다.
스칼라 서브쿼리의 동작은 다음과 같다
1. 메인쿼리 실행
2. 스칼라 서브쿼리용 데이터를 메모리에 띄움
3. 값 도출
4. 다시 메인쿼리 실행
이 작업을 메인쿼리가 끝날 때 까지 실행한다.
from절에 내리게 될 경우 서브쿼리가 우선적으로 실행되기 때문에 값이 달라질 수 있다.
따라서, 스칼라 서브쿼리의 경우 메모리에 미리 값을 띄워두고 메인쿼리를 반복하기 때문에 훨씬 빠르게 찾을 수 있다. 그러나, 띄운 메모리와 다른 값을 찾게 될 경우는 다시 하드웨어에서 값을 찾아 메모리에 다시 띄우는 일을 해야하기 때문에 느려질 우려가 있으며, Driven 속에 pk가 없고, 데이터가 계속해서 커질 경우 메모리에 전부 띄울 수 없는데다가, 스칼라 서브쿼리로 띄운 메모리를 계속해서 풀스캔 하며 읽기 때문에 사용하지 않도록 한다. 따라서 스칼라 서브쿼리는 작은 데이터를 빠르게 읽는 용도로 쓰인다.
단, 스칼라 서브쿼리 시 한 값에 두 개 이상의 내용을 주어지게 할 경우 값이 반환되지 않고 오류가 뜨므로 주의해야한다.
반응형
'데이터베이스' 카테고리의 다른 글
무료 다중 데이터베이스 플랫폼, DBeaver (0) | 2021.03.16 |
---|---|
DB와 JAVA 연동하기 (0) | 2020.04.22 |
데이터 검색 기법 (0) | 2020.04.02 |
11. SUB QUERY (0) | 2020.04.02 |
10. DML (0) | 2020.04.02 |