2014년 5월 26일 월요일

[Hint]사용 형식 [오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육] 1. 힌트 구문은 기본적으로 대소문자를 구별하지 않으며 SQL 블록에서 두 가지 형태가 가능 합니다. 형식1) /*+ hint */ …… 형식2) --+hint ……(--+다음에 공백이 있으면 안됩니다.) --+ 보다는 /*+ 로 시작하는 형식을 많이 사용하는데 --+ 형식의 경우 일부 버전의 DB에서는 인식이 되지 않기 때문 입니다. 2. 힌트를 포함하는 주석은 SELECT, UPDATE, DELETE, INSERT 키워드 다음에만 사용할 수 있습니다. 3. 주석에 힌트가 여러 개 있으면 각 힌트는 공백으로 구분되어야 합니다. SQL>SELECT /*+ FULL(E) INDEX(D pk_dept) */ e.ename, d.dname FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO 3. From절 다음에 테이블 alias를 사용한 경우에 힌트 문에 테이블 명이 와야 한다면 반드시 Alias명을 기술하도록 해야 합니다. SQL>SELECT /*+ FULL(E) */ * FROM EMP E; 4. 힌트 구문이 잘못 사용되었더라도 SQL 문장이 올바르면 실행됩니다. 5. 구문 오류가 있는 힌트 문장을 무시하지만 같이 쓰여진 것 중에 올바른 힌트가 있다면 이는 인정을 합니다. 아래에서 FULLL이 잘못 쓰여 졌지만 INDEX(D pk_dept) 힌트는 인정됩니다. SQL>SELECT /*+ FULLLL(E) INDEX(D pk_dept) */ e.ename, d.dname FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO 6. 만약 힌트구문이 여러 개 쓰였는데 이들끼리 콤마(,)로 구분 되었다면 ’/*’ 부터 ‘,’ 사이의 힌트 구문까지만 유효합니다. 아래의 경우 FULL(E) 까지만 유효합니다. SQL>SELECT /*+ FULL(E) , INDEX(D pk_dept) */ e.ename, d.dname FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO 7. 힌트 구문간의 ‘,’가 아니라 힌트내의 인자를 취하는 구문에서 인자간의 구분을 위해 ‘,’을 사용하는 경우는 유효 합니다. 아래의 두 경우 모두 유효 합니다. SQL>SELECT /*+ INDEX(E idx_ename) */ EMPNO, ENAME FROM EMP E WHERE ENAME = ‘홍길동’; SQL>SELECT /*+ INDEX(E, idx_ename) */ EMPNO, ENAME FROM EMP E WHERE ENAME = ‘홍길동’; 8. 아래의 예를 참고 하세요. SQL>SELECT /*+ FULL(SCOTT.EMP) */ * FROM EMP;(X) SQL>SELECT /*+ FULL(EMP) */ * FROM SCOTT.EMP;(O) SQL>SELECT /*+ FULL(E) */ * FROM SCOTT.EMP E;(O) 9. 일부 데이터베이스 개발 툴에서 힌트 구문이 먹히지 않는 경우가 있는데 이는 힌트를 주석으로 간주해 버려서 입니다.(토드 나 오렌지 등은 힌트를 정확히 인식합니다.) 이 경우 힌트가 있는 문장을 뷰로 만들어 이용하면 되는데 아래를 참고하세요. 만약 다음과 같은 힌트 문장이 인식되지 않는다면… SQL>SELECT /*+ INDEX(E idx_ename) */ * FROM EMP E WHERE ENAME = ‘홍길동’; 다음처럼 뷰를 만듭니다. SQL>CREATE OR REPLACE VIEW V_EMP AS SELECT /*+ INDEX(E idx_ename) */ * FROM EMP E; 뷰를 질의 합니다. SQL>SELECT * FROM V_EMP WHERE ENAME = ‘홍길동’; * 이종철님에 의해서 게시물 이동되었습니다 (2006-06-04 12:28) [출처] 오라클자바커뮤니티 - http://www.oraclejavacommunity.co.kr/bbs/board.php?bo_table=LecHINT&wr_id=21 오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 www.oraclejavacommunity.com 평일주간(9:30~18:20) 개강 (5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정 (5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (5/30)[기업100%환급]SQL기초에서 Schema Object까지 (6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING (6/09)[기업100%환급]안드로이드개발자과정 (6/09)[기업100%환급]Spring ,MyBatis,Hibernate실무과정 (6/16)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍 평일야간(19:00~21:50) 개강 (5/28)Spring3.X, MyBatis, Hibernate실무과정 (5/28)SQL초보에서실전전문가까지 (5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (6/03)안드로이드개발자과정 (6/03)웹퍼블리싱 마스터 (6/10)C#4.0, ADO.NET, Network 프로그래밍 (6/19)C#,ASP.NET마스터 주말(10:00~17:50) 개강 (5/31)Spring3.X, MyBatis, Hibernate실무과정 (5/31)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (5/31)SQL초보에서실전전문가까지 (5/31)C#,ASP.NET마스터 (5/31)실무예제로 배워보는 jQuery(개발자/디자이너를위한) (5/31)안드로이드개발자과정 주말저녁(18:30~22:20) 개강 (6/21)JAVA,Network&WEB&Framework (6/21)SQL기초에서실무까지

[Hint]사용 형식 [오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

1. 힌트 구문은 기본적으로 대소문자를 구별하지 않으며 SQL 블록에서 두 가지 형태가 가능 합니다. 

형식1) 
/*+ hint */ …… 

형식2) 
--+hint ……(--+다음에 공백이 있으면 안됩니다.) 

--+ 보다는 /*+ 로 시작하는 형식을 많이 사용하는데 --+ 형식의 경우 일부 버전의 DB에서는 인식이 되지 않기 때문 입니다. 

2. 힌트를 포함하는 주석은 SELECT, UPDATE, DELETE, INSERT 키워드 다음에만 사용할 수 있습니다. 

3. 주석에 힌트가 여러 개 있으면 각 힌트는 공백으로 구분되어야 합니다. 

SQL>SELECT /*+ FULL(E) INDEX(D pk_dept) */ e.ename, d.dname 
    FROM EMP E, DEPT D 
    WHERE E.DEPTNO = D.DEPTNO 

3. From절 다음에 테이블 alias를 사용한 경우에 힌트 문에 테이블 명이 와야 한다면 반드시 Alias명을 기술하도록 해야 합니다. 

SQL>SELECT /*+ FULL(E) */ * FROM EMP E; 

4. 힌트 구문이 잘못 사용되었더라도 SQL 문장이 올바르면 실행됩니다. 

5. 구문 오류가 있는 힌트 문장을 무시하지만 같이 쓰여진 것 중에 올바른 힌트가 있다면 이는 인정을 합니다. 

아래에서 FULLL이 잘못 쓰여 졌지만 INDEX(D pk_dept) 힌트는 인정됩니다. 

SQL>SELECT /*+ FULLLL(E) INDEX(D pk_dept) */ e.ename, d.dname 
    FROM EMP E, DEPT D 
    WHERE E.DEPTNO = D.DEPTNO 

6. 만약 힌트구문이 여러 개 쓰였는데 이들끼리 콤마(,)로 구분 되었다면 ’/*’ 부터 ‘,’ 사이의 힌트 구문까지만 유효합니다. 

아래의 경우 FULL(E) 까지만 유효합니다. 

SQL>SELECT /*+ FULL(E) , INDEX(D pk_dept) */ e.ename, d.dname 
    FROM EMP E, DEPT D 
    WHERE E.DEPTNO = D.DEPTNO 


7. 힌트 구문간의 ‘,’가 아니라 힌트내의 인자를 취하는 구문에서 인자간의 구분을 위해 ‘,’을 사용하는 경우는 유효 합니다. 

아래의 두 경우 모두 유효 합니다. 

SQL>SELECT /*+ INDEX(E idx_ename) */ 
EMPNO, ENAME 
    FROM  EMP E 
    WHERE ENAME = ‘홍길동’; 


SQL>SELECT /*+ INDEX(E, idx_ename) */ 
EMPNO, ENAME 
    FROM  EMP E 
    WHERE ENAME = ‘홍길동’; 

8. 아래의 예를 참고 하세요. 

SQL>SELECT /*+ FULL(SCOTT.EMP) */ * FROM EMP;(X) 
SQL>SELECT /*+ FULL(EMP) */ * FROM SCOTT.EMP;(O) 
SQL>SELECT /*+ FULL(E) */ * FROM SCOTT.EMP E;(O) 

9. 일부 데이터베이스 개발 툴에서 힌트 구문이 먹히지 않는 경우가 있는데 이는 힌트를 주석으로 간주해 버려서 입니다.(토드 나 오렌지 등은 힌트를 정확히 인식합니다.)  이 경우 힌트가 있는 문장을 뷰로 만들어 이용하면 되는데 아래를 참고하세요. 

만약 다음과 같은 힌트 문장이 인식되지 않는다면… 

SQL>SELECT /*+ INDEX(E idx_ename) */ * 
    FROM EMP E 
    WHERE ENAME = ‘홍길동’; 

다음처럼 뷰를 만듭니다. 

SQL>CREATE OR REPLACE VIEW V_EMP AS 
SELECT /*+ INDEX(E idx_ename) */ * 
    FROM EMP E; 

뷰를 질의 합니다. 

SQL>SELECT * 
    FROM V_EMP 
    WHERE ENAME = ‘홍길동’;
* 이종철님에 의해서 게시물 이동되었습니다 (2006-06-04 12:28) 

댓글 없음:

댓글 쓰기