CHAPTER03 스칼라 서브쿼리의 이해와 효율적인 SQL 작성하기 

스칼라 서브쿼리의 특성 이해하기

  • Select Column List절에 사용된 서브쿼리를 스칼라서브쿼리라고 하며, 다음과 같은 특성이 있다.

{+}최대 결과 건수만틈 반복적으로 수행된다{+}

  • 스칼라 서브쿼리의 "최대"로 반복수행되는 횟수는 SQL의 결과 건수다.
  • 스칼라서브쿼리는 입력값에 대한 결과를 Multi Buffer에 저장해 놓으므로 동일한 입력값으로 들어오면, 스칼라서브쿼리를 수행하지 않고 Multi Buffer에 저장한 값을 이용하여 리턴한다.
  • 9i에서는 하나의 버퍼를 이용했으나, 10에서는 Multi Buffer를 사용하여 더 많은 데이터를 저장할 수 있다.
    ( \_query_execution_cache_max_size로 버퍼사이즈 조절이 가능하며 디폴트값은 64KB) 

{+}추출되는 데이터는 항상 1건만 유효하다{+}

  • 스칼라서브쿼리에서 추출되는 데이터가 1건을 초과하는 경우, 에러발생

{+}데이터가 추출되지 않아도 된다{+}

  • NULL 데이터를 추출해도 SQL수행에 영향을 미치지 않는다.
  • 스칼라서브쿼리를 조인으로 변경할 때, 조인연결 컬럼은 중복값이 없어야 하며, Outer Join으로 수행해야 한다.