Tech Collection

[SQL] SubQuery 본문

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
반응형

'Concept > Note' 카테고리의 다른 글

[SQL] 실행 계획  (0) 2021.05.30
[SQL] JOIN  (0) 2021.05.30
[SQL] Index  (0) 2021.05.30
[Interview] Java 기초 정리  (0) 2021.04.09