스칼라 서브쿼리
- Select Column List절에 사용된 서브쿼리
특성
1. 최대 결과 건수만큼 반복적으로 수행된다.
- "최대" 반복 수행 되는 횟수는 SQL의 결과 건수이다.
- Deterministic 속성을 가지고있다.
- 동일한 입력 값에 대해 결과 값이 항상 같다는 것을 보장한다.
2. 추출되는 데이터는 항상 1건만 유효하다.
- 추출되는 데이터가 1건을 초과한다면, "ROWNUM <= 1"조건을 추가해준다.
select c1,c2,c3
(select t2.c1 from scalar_t2 t2 where t2.c2 = t1.c2
and ROWNUM <= 1) as t2_c1
from scalar_t1 t1
where c2 = 'A'
and ROWNUM <= 1
3. 데이터가 추출되지 않아도 된다.
- null 데이터를 추출해도 SQL의 수행에 영향을 미치지 않는다.
- 만약 null 데이터를 임의의 다른 값으로 치환하고 싶은경우 NVL 함수를 사용한다.
select c1,c2,c3
NVL((select null from scalar_t2 t2 where t2.c2 = t1.c2
and ROWNUM <= 1),'ISNULL') as t2_c1
from scalar_t1 t1
where c2 = 'A'
and ROWNUM <= 1
스칼라 서브쿼리를 조인으로 변경할 때, 반드시 조인 연결 컬럼이 중복 값을 가지지 않도록 해야하고, 조인은 Outer Join으로 수행해야한다.
'SQL 튜닝의 시작' 카테고리의 다른 글
[ SQL ] 서브쿼리를 활용한 SQL 성능개선 (0) | 2021.03.21 |
---|---|
[ SQL ] 서브쿼리 동작방식 이해하기 (0) | 2021.03.07 |
[ SQL ] 서브쿼리에 대한 기본내용 이해하기 (0) | 2021.03.05 |