집약 함수의 종류에는 다음 5가지 종류가 있다.
5가지에 대한 설명은 다들 알 것이라고 생각하고 생략하겠다.
GROUP BY를 사용해 집약을 수행할 경우에 정렬보다 해시 알고리즘을 많이 사용한다.
경우에 따라서 정렬을 사용하기도 하지만, 보다 빠른 방법인 해시를 많이 사용한다.
해시의 성질상 GROUP BY의 유일성이 높으면 더 효율적으로 작동한다.
충분한 해시용(or 정렬용) 워킹 메모리가 확보되지 않으면 스왑이 발생한다.
=> 저장소 위의 파일이 사용되면서 굉장히 느려짐
Oracle에서는 정렬과 해시를 위해 PGA라는 메모리 영역을 사용하고, 집약 대상 데이터양에 비해 부족하면, 일시 영역(저장소)를 사용해 부족한 만큼 채운다.
이런 현상을 'TEMP 탈락'이라고 한다.
GROUP BY 구에서 집약 기능을 제외하고 자르는 기능만 남긴 것이 윈도우 함수의 'PARTITION BY' 구이다.
GROUP BY 구는 입력 집합을 집약하므로 전혀 다른 레벨의 출력으로 변환하지만, PARTITION BY 구는 입력에 정보를 추가할 뿐이르모 원본 테이블 정보를 완전히 그대로 유지한다.
GROUP BY의 자세한 사용법과 PARTITION BY 구를 알게 되어 재미있었다.
이해하기 쉬운 내용이라 처음 알게된 사실들만 간단히 정리했다.