database/oracle

사용편의, 수행속도향상, 융통성 있는 View

labj 2012. 3. 21. 20:57

- 사용편의를 위한 View
CREATE VIEW v_emp_complex AS
SELECT empno, ename, deptno, hiredate FROM emp
WHERE (sal*comm) + 12 > 20000
AND deptno = 30
AND job = 'SALESMAN'
AND sysdate - 365 + 10 > hiredate;

SELECT * FROM v_emp_complex;

- 한글 View
CREATE VIEW 사원(사번, 성명, 부서번호, 입사일) AS
SELECT empno, ename, deptno, hiredate FROM emp
WHERE deptno = 30

 


- 수행속도 향상을 위한 View
- 제일 큰 값을 구하여라!
- HINT를 사용하였음 : 옵티미아저에게 힌트를 주었다. 기본은 asc이지만 인덱스를 desc 하여 조회하라
- max()를 쓰지않고 게시판이나 코드성 쿼리를 할 때 실행속도가 일정하게 나온다.
CREATE VIEW v_dept_max AS
SELECT /*+ INDEX_DESC(dept pk_dept) */ deptno
FROM dept
WHERE deptno > 0 // (인덱스를 타게) 이 검색조건에 따라서 이 인덱스를 사용하므로 준 것이다.
AND rownum = 1; // 하나이므로 제일 큰 값이 구해진다.

SELECT * FROM v_dept_max;

 


- 융통성 향상을 위한 VIEW
- 0.15 와 같은 값이 변동이 되므로 이걸 어플리케이션 코드에 넣지 않고, view에 넣고 생성한다.
CREATE VIEW v_emp_bonus ( empno, bouns) AS
SELECT empno, (sal+NVL(comm,0)) * 0.15
FROM emp;