1. 

 

  select deptno, job, count(*) 

     from emp 

  where rollup (deptno, job) 

  ;



2. 


select deptno, empno, ename, sum(sal) 

 from emp 

group by deptno, empno, ename 

  union all 

select deptno, empno, null, sum(sal) 

 from emp 

group by deptno, empno 

 union all 

select deptno, null, null , sum(sal) 

 from emp 

group by deptno 

;


--이거 하면서 


select deptno, empno, ename, sum(sal) 

 from emp 

group by rollup (deptno, empno, ename) 


;


이것도 내가 예측한 결과와 맞는지 확인해보기 



3. 


create index dept_loc on dept(loc) ;


create index emp_deptno_job on emp(deptno,job) ;


select * 

 from dept d, 

        ( select deptno, empno, ename, job, sal, sal * 1.1 sal2 

           from emp e1 

           where job = 'CLERK' 

          union all 

          select deptno, empno, ename, job, sal, sal * 1.2 sal2 

            from emp e2 

           where job = 'SALESMAN' ) v 

  where v.deptno = d.deptno and d.loc = 'CHICAGO'

  ;


---  이 경우 힌트 없이도 두번째 인덱스를 타는지 확인해보고 

     ( 원래 조건절 push down 에 대한 문제를 내고 싶었던 것 같은데 

       조건절 push down 은 힌트가 원래 없다. 

       그래서 적용이 원래 되어야 하는건데 옵티마이저에 선택에 따라 

       달라질 수 있는지 확인) 


--- /*+ ordered use_nl(v) */ 이 힌트 추가 후 두번째 인덱스를 타는지도 확인 



4. 


select /*+ gather_plan_statistics */ 

       d.deptno, d.dname, v.avg_sal 

 from dept d

      , (select deptno, avg(sal) avg_sal 

          from emp

         where deptno = d.deptno 

         group by deptno ) v 

 where v.deptno (+) = d.deptno 

;


-- 이걸 테스트 하면서 hash join에서의 outer join 과 nl join 에서 outer join에 실행 계획 비교 


5. 



+ Recent posts