Concept/Note
[SQL] SubQuery
eee_269
2021. 5. 30. 22:30
728x90
반응형
- 하나의 SQL문 안에 포함되어있는 또 다른 SQL문
- 메인쿼리가 서브쿼리를 포함하는 종속적인 관계
- 단일 행 서브쿼리
- 서브쿼리의 질의 실행 결과가 항상 1건 이하인 서브쿼리를 의미
단일 행 비교 연산자
연산자 | 의미 |
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
= | 같다 |
!=, <>, ^= | 다르다 |
- 다중 행 서브쿼리
- 서브쿼리의 결과가 여러 건인 서브쿼리를 의미
- 만약, 서브쿼리에서 반환 값이 없으면 메인 쿼리에서도 반환 값이 없다.
다중 행 비교 연산자
연산자 | 의미 |
IN | 하나라도 일치 ( null 값은 표현 안 함 ) |
>ANY <ANY |
하나라도 크면 하나라도 작으면 |
>ALL <ALL |
모두 크면 모두 작으면 |
EXISTS | 존재하면 ( null 값도 표현 ) |
- 다중 컬럼 서브 쿼리
- 서브 쿼리의 실행 결과로 여러 컬럼을 반환
- 메인쿼리 WHERE절과 서브쿼리에서 반환하는 컬럼의 수가 반드시 같아야 함
- IN 주로 사용
다중 컬럼 비교 연산자
연산자 | 의미 |
IN | 하나라도 일치 |
= | 같다 |
- 스칼라 서브쿼리
- 한 레코드당 정확히 하나의 값만을 리턴하는 서브쿼리
- 행 수 만큼 서브쿼리 수행
- LEFT OUTER JOIN 과 같다
- 스칼라 서브쿼리 수행 회수를 최소화하려고 그 입력 값과 출력 값을 내부 캐시에 저장해둔다.
- 입력 값이 소수인 경우에 캐시에 효과를 볼 수 있어 조인보다 성능이 더 좋다.
- 저장된 캐시 개수가 일정 범위를 넘어서면 매번 서브 쿼리를 반복 수행하게 된다.
728x90
반응형