Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alles over groeperen Rollups, Cubes, Grouping Sets en hun interne werking Rob van Wijk 22 september 2014.

Similar presentations


Presentation on theme: "Alles over groeperen Rollups, Cubes, Grouping Sets en hun interne werking Rob van Wijk 22 september 2014."— Presentation transcript:

1 Alles over groeperen Rollups, Cubes, Grouping Sets en hun interne werking Rob van Wijk 22 september 2014

2 Wie ben ik Rob van Wijk 22 september 2014 Oracle ontwikkelaar Utrecht

3 Alles Over Groeperen Inleiding GROUPING SETS ROLLUP CUBE Combineren / rekenen Ondersteunende functies Interne werking Onderwerpen 22 september 2014

4 Alles Over Groeperen Inleiding 22 september 2014 aog1.sql

5 Alles Over Groeperen GROUP BY col 1, …, col n ≡ GROUP BY GROUPING SETS ( (col 1, …, col n ) ) GROUPING SETS (1) 22 september 2014 aog2.sql

6 Alles Over Groeperen GROUP BY GROUPING SETS ( (col 11, …, col 1n ), …, (col x1, …, col xm ) ) ≡ GROUP BY col 11, … col 1n UNION ALL … UNION ALL GROUP BY col x1, …, col xm GROUPING SETS (2) 22 september 2014 aog3.sql

7 Alles Over Groeperen GROUP BY ROLLUP ( set 1, …, set n ) ≡ GROUP BY GROUPING SETS ( (set 1, …, set n ), (set 1, …, set n-1 ), …, set 1, () ) ROLLUP (1) 22 september 2014

8 Alles Over Groeperen ROLLUP (set 1, …, set N ) met N ≥ 1 leidt tot N+1 GROUPING SETS ROLLUP (2) 22 september 2014

9 Alles Over Groeperen Voorbeeld: GROUP BY ROLLUP ( (deptno), (job,mgr), (empno) ) ≡ GROUP BY GROUPING SETS ( (deptno,job,mgr,empno), (deptno,job,mgr), (deptno), () ) ROLLUP (3) 22 september 2014 aog4.sql

10 Alles Over Groeperen GROUP BY CUBE ( set 1, …, set n ) ≡ GROUP BY GROUPING SETS (alle mogelijke combinaties tussen () en (set 1, …, set n ) ) CUBE (1) 22 september 2014

11 Alles Over Groeperen CUBE (set 1, …, set N ) met N ≥ 1 leidt tot 2 N GROUPING SETS CUBE (2) 22 september 2014

12 Alles Over Groeperen CUBE (3) 22 september 2014 0 sets X 1 set 2 sets 3 sets 4 sets Volgens de driehoek van Pascal

13 Alles Over Groeperen Voorbeeld: GROUP BY CUBE ( (deptno), (job,mgr), (empno) ) ≡ GROUP BY GROUPING SETS ( (deptno,job,mgr,empno), (deptno,job,mgr), (deptno,empno), (job,mgr,empno), (deptno), (job,mgr), (empno), () ) CUBE (4) 22 september 2014 aog5.sql

14 Alles Over Groeperen GROUP BY deptno, ROLLUP(empno) ? Combineren / rekenen (1) 22 september 2014

15 Alles Over Groeperen GROUP BY deptno, ROLLUP(empno) ≡ GROUP BY GROUPING SETS (deptno), GROUPING SETS ( empno, () ) Combineren / rekenen (2) 22 september 2014

16 Alles Over Groeperen Cartesisch product ! GROUP BY deptno, ROLLUP(empno) ≡ GROUP BY GROUPING SETS (deptno), GROUPING SETS ( (empno), () ) ≡ GROUP BY GROUPING SETS ( (deptno,empno), (deptno) ) Combineren / rekenen (3) 22 september 2014 aog6.sql

17 Alles Over Groeperen Vraag: Hoeveel grouping sets levert dit op? GROUP BY ROLLUP(deptno,job), CUBE(mgr,hiredate) Antwoord: 3 * 4 = 12 Combineren / rekenen (4) 22 september 2014 aog7.sql

18 Alles Over Groeperen GROUPING GROUPING_ID GROUP_ID Ondersteunende functies 22 september 2014 aog8.sql

19 Alles Over Groeperen SORT GROUP BY versus HASH GROUP BY Interne werking 22 september 2014

20 Alles Over Groeperen Interne werking: ROLLUP (deptno,empno) 22 september 2014 10 7782 2450 10 7839 5000 10 7934 1300 20 7369 800 20 7566 2975 20 7788 3000 20 7876 1100 20 7902 3000 30 7499 1600 30 7521 1250 30 7654 1250 30 7698 2850 30 7844 1500 30 7900 950 10 NULL 8750 20 NULL 10875 30 NULL 9400 + + NULL 29025 inkomende verzameling grouping set ( (deptno,empno) ) grouping set ( () ) grouping set ( (deptno) ) SORT GROUP BY aog9.sql

21 Alles Over Groeperen Interne werking: CUBE(deptno,job) 22 september 2014 SORT GROUP BY GENERATE CUBE SORT GROUP BY inkomende verzameling grouping set (deptno,job) 14 rijen 9 rijen 36 rijen 18 rijen aog10.sql

22 Alles Over Groeperen Interne werking: GROUPING SETS (1) 22 september 2014 LOAD AS SELECT (into input table) TABLE ACCESS FULL (EMP) TEMP TABLE TRANSFORMATION VIEW TABLE ACCESS FULL (output table) tijdelijke inputtabel SYS_TEMP_... tijdelijke outputtabel SYS_TEMP_... LOAD AS SELECT (into outputtabel) HASH GROUP BY TABLE ACCESS FULL (input tabel) itereer zo vaak als dat er grouping sets zijn aog11.sql

23 Alles Over Groeperen Optimalisatie naar ROLLUP of CUBE executie indien mogelijk ? Interne werking: GROUPING SETS (2) 22 september 2014 aog12.sql

24 Alles Over Groeperen Vragen? 22 september 2014


Download ppt "Alles over groeperen Rollups, Cubes, Grouping Sets en hun interne werking Rob van Wijk 22 september 2014."

Similar presentations


Ads by Google