Filter, Join 동작방식 이해하기

[ 서브쿼리 동장방식 ]

1. FILTER 동작방식

  • Main SQL에서 추출된 데이터 건수만큼 서브쿼리가 반복적으로 수행되며 처리되는 방식

( 특징 )

  • Main SQL의 추출 결과가 많고, 서브쿼리에 제공해 주는 값의 종류가 많다면, 성능이 좋지않다.
  • Main SQL의 추출 건수가 적거나, 추출결과가 많다 하더라도 서브쿼리에 제공해 주는 값의 종류가 적은 경우 성능이 양호하다.
  • 항상 Main SQL이 먼저 수행되며, 서브쿼리는 Main SQL에서 추출된 데이터의 값을 전달 받아 매번 확인하는 형태로 수행된다.
  • 서브쿼리가 Filter 동작방식으로 수행되는 경우 SQL의 성능이 좋지 않은 경우가 대부분

2. JOIN 동작방식

  • Filter 동작방식과 비교 하였을때, 가장 큰 차이점은 가변성이다.

( 특징 )

  • Nested Loops Join, Hash Join, Sort Merge Join, Semi Join, Anti Join 등의 다양한 조인 방법 중 유리한 것을 선택할 수 있다.
  • Semi / Anti Join 을 제외하고 수행순서도 선택할 수 있다. ( 유연한 처리 가능 )
  • Input 값의 종류가 적은 경우라면, 오히려 Filter 동작 방식이 성능상 유리할 수도있다.

※ 정리 : 서브쿼리가 어떤 동작 방식을 선택하느냐에 따라 SQL 성능은 큰 차이가 발생할 수 있으므로, 서브쿼리가 포함된 SQL을 작성할 때는 반드시 작성 후 실행계획을 검토하고, 효율적인 동작방식으로 수행될 수 있도록 해야 한다.