1. Rollup Cube
롤업 : 소 그룹간의 소계를 계산
큐브 : group by 항목들 간의 다차원적인 소계를 계산

※ 롤업 & 큐브
- 롤업이나 큐브에 의한 소계가 계산된 결과에는 grouping(expr) = 1 이 표시되고,
   그외의 결과에는 grouping(expr) = 0 이 표시됨.
- grouping 함수와 decode 를 이용해, 소계를 나타내는 필드에 원하는 문자열을 지정할 수 있음
※ grouping columns 이 가질수 있는 모든 경우에 대하여 subtotal을 생성해야하는 경우에는 cube를 사용하는 것이 바람직하나, rollup 에 비해 시스템에 많은 부담을 주므로 사용에 주의해야함.

2) 일반적인 group by

3) rollup 함수

4) grouping 함수

5) decode + grouping 함수

6) Cube 함수

7) 수정 전 SQL
※ TAB13에 대한 테이블 스캔이 3번이나 발생함.

8) 수정 후 SQL
※ 크게 달라진 부분은 3번 스캔하는 부분을 1번으로 줄인 부분. 기존에 3번 스캔하는 이유가 되었던 소계와 총합 부분을 (2번의 scan 이 추가됨) rollup 함수를 이용해서 1번의 scan 으로 구현하므로 자원 사용 및 수행 속도를 개선할 수 있음.

2. Grouping Sets
1) 서브쿼리의 정의 및 특성
오라클 9i 버전 부터는 칼럼간의 다양한 합성도 가능하며, grouping sets 을 이용해 더욱 다양한 집합을 만들 수 있음.

2) Grouping Set 을 이용한 새로운 집합의 생성

3. Sum(Decode) ~ Group by
1) sum(decode) ~ group by 튜닝

1년 12달, 1년 4분기, 고정된 과목 종류등 정해진 칼럼의 수가 고저되어 있다면, 매우 유용하게 사용할 수 있는 SQL 튜닝 기법


2) sum(decode) ~ group by 튜닝 적용

더보기


4. 이것만은 꼭!

더보기


 




 

크리에이티브 커먼즈 라이선스
Creative Commons License

설정

트랙백

댓글