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.
'ORACLE > SQLP' 카테고리의 다른 글
성능고도화 1-1. 인덱스 구조 (0) | 2016.12.26 |
---|---|
2016년 4월달 SQLP 시험 실기 (0) | 2016.11.25 |
SQLP 시험 문제 7일차 (0) | 2016.11.24 |
SQLP 시험문제 6일차 (0) | 2016.11.24 |
sqlp19회 실습문제 2번 테이블명 컬럼명 영어로 바꿈 (0) | 2016.11.04 |