Group by 튜닝
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 GROUP BY 튜닝[편집]
1.1 개요[편집]
- Group by와 Order by를 동일한 칼럼에 결합하여 사용할때, 성능 개선 효과 발생
- Group by를 수행하면 연관된 칼럼의 소팅을 포함해서 처리 하고 처리된 수행결과를 리턴함
- Hash Group By 는 소팅 없이 이러한 결과를 생성함
- 즉, Sort-Based Group by보다 항상 낳은 성능을 발휘한다.
- 불행하게도 Order By 절을 동일 칼럼에 Group By절과 함께 사용한다면 Sort-Based Group by로 변경하며 성능은 저하될수 있음
OPT_PARAM("_GBY_HASH_AGGREGATION_ENABLED" "FALSE") 힌트
1.2 GROUP BY 튜닝 핵심 사항[편집]
- 오라클에서 ORDER BY를 해야하는 상황에서 강제적으로 HASH GROUP BY를 수행하도록 하는것이 핵심
- 오라클이 HASH GROUP BY를 수행할 수 있도록 서브쿼리에 GROUP BY를 수행하도록 만들었다.
- 그리고 외부 쿼리에서 ORDER BY를 수행할때 NO_MERGE 힌트를 지정하여, 외부 쿼리가 내부 서브쿼리에 통합되지 않도록 지정했다.
- 결과적으로 플랜을 보면, HASH GROUP BY를 수행하고, 그 결과를 SORT ORDER BY로 처리되도록 재설정 되었다.