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을 작성할 때는 반드시 작성 후 실행계획을 검토하고, 효율적인 동작방식으로 수행될 수 있도록 해야 한다.
'SQL 튜닝의 시작' 카테고리의 다른 글
[ SQL ] 스칼라 서브쿼리의 특성 (0) | 2021.04.03 |
---|---|
[ SQL ] 서브쿼리를 활용한 SQL 성능개선 (0) | 2021.03.21 |
[ SQL ] 서브쿼리에 대한 기본내용 이해하기 (0) | 2021.03.05 |