전체 글 썸네일형 리스트형 oracle - [Hint]ACCESS 경로를 변경하는 힌트(NO_INDEX) [Hint]ACCESS 경로를 변경하는 힌트(NO_INDEX) [Hint]ACCESS 경로를 변경하는 힌트(NO_INDEX) 이 힌트의 인자로 주어진 인덱스를 사용하지 말라는 의미인데 인덱스를 인자로 안주고 테이블만 인자로 준다면 그 테이블에서 생성된 어떠한 인덱스도 사용하지 말라는 뜻입니다. [형식] /*+ NO_INDEX ( table [index [index]...] ) */ [인덱스를 사용하는 경우] SELECT /*+ INDEX(EMP idx_emp_ename) */ ename, sal FROM EMP WHERE ENAME LIKE 'S%'; -------------------------------------------------------------------- Operation Object .. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(NO_EXPAND) [Hint]ACCESS 경로를 변경하는 힌트(NO_EXPAND) [Hint]ACCESS 경로를 변경하는 힌트(NO_EXPAND) NO_EXPAND 힌트는 COST BASED Optimizer 모드에서 OR 조건이나 IN List등을 사용할 때 OR확장(Concatenation등을 사용하여..)을 막는 것인데 실행 계획에 Concatenation이 나타날 수 있는데 이를 사용하지 않도록 않도록 처리해 줍니다. 즉 OR를 UNION-ALL로 풀지 말고 아래의 예를 보죠~ [형식] /*+ NO_EXPAND */ 실습을 위해 먼저 옵티마이저 모드를 RULE로 바꾼 후 … 왜 바꾸냐 하면? EMP 테이블의 경우 데이터 양이 적으므로 OR를 사용하더라도 FULL SCAN하는 실행계획을 만들어 내므로 고의로 CONC.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS) 이 힌트의 의미는 인덱스를 FAST FULL SCAN하라는 것인데 보통 인덱스에 대한 스캔은 단일 블록 스캔인데 반해 인덱스 패스트 풀 스캔은 Multi Block Scan 입니다. 이왕 데이터를 읽을 때 하나씩 블록을 읽는 것보다 당연히 여러 개의 블록을 읽는다면 수행속도가 빨라질 것입니다. 물론 이 힌트가 동작하기 위해서는 SELECT절에 나타나는 컬럼들이 INDEX_FFS의 인자로 사용된 인덱스의 컬럼 이어야 합니다. 예를 들어 index_ffs의 인자로 idx_emp_ename(EMP 테이블의 ename 컬럼에 대한 인덱스) 이 주어졌다면 SELECT절에 나열되는 컬럼이.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC) 이 힌트는 이전 강좌의 INDEX, INDEX_ASC 힌트와 정반대 기능을 합니다. 즉 데이터를 인덱스를 이용하여 스캔 하지만 역순으로 스캔 하라는 의미이죠… 프로그래밍을 하다 보면 데이터를 역순으로 가지고 올 경우가 가끔 있는데 그 경우 이 힌트를 이용하시면 효율적으로 프로그래밍이 가능하리라 생각 합니다. 즉 어느 정도 양이 되는 테이블의 경우 order by를 사용하지 마시고 index_desc 힌트를 이용하시는 것이 좋을 것이라는 이야기 입니다. EMP 테이블에서 사원명, 급여를 출력하는데 사원명의 역순으로 출력하라고 했을 때… (EMP 테이블의 경우 데이터 건수가 얼.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) 이 힌트는 비트맵 인덱스에 대해서만 적용 가능한 힌트 입니다. 예를 들어 EMP 테이블에 대해 ename에 bidx_emp_ename이라는 비트맵 인덱스, deptno에 bidx_emp_deptno라는 비트맵 인덱스가 생성되어 있다고 할 때 아래와 같이 INDEX_COMBINe이라는 힌트와 테이블 명을 인자로 주게 되면 적절한 비트맵 인덱스를 조합하여 실행 계획을 만들어 내게 됩니다. SELECT /*+ INDEX_COMBINE(E) */ * FROM EMP E WHERE ename = ‘SMITH’ AND deptno = 10; Execution Plan ---.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) 앞선 강좌의 INDEX 힌트와 동일한데 보이는 그대로 인덱스를 스캔 하는데 오름차순(ASCENDING) 스캔 하라는 의미의 힌트 입니다. 이힌트를 이용하여 데이터를 추출하데 되면 화면에 나타나는 데이터는 인덱스 키를 기준으로 오름차순 정렬된 모습으로 나타나겠죠^^ 만약 EMP 테이블에서 사원들의 이름과 급여를 출력하는데 이름순으로 정렬을 하라고 했을 때… 다음과 같이 하면 되지만 이 경우엔 SORT를 위한 TEMP 영역을 사용하게 되므로 많은 양의 데이터를 추출하는 경우엔 상당한 OVERHEAD가 따르게 됩니다. 되도록 이런 식으로는 사용하지 않는 것이 좋을 것 같습니다. (예.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX) [Hint]ACCESS 경로를 변경하는 힌트(INDEX) [Hint]ACCESS 경로를 변경하는 힌트(INDEX) 이 힌트는 생긴 그대로 테이블에 있는 인덱스를 사용할 수 있도록 해주는 구문 입니다. 비트맵 인덱스에 대해서는 사용이 가능하지만 INDEX_COMBINE 힌트를 쓰는 것이 맞구요… 사용법은 다음과 같습니다. [형식] /*+ INDEX ( table [index [index]...] ) */ [예] 우선 통계정보를 생성하고 인덱스를 만들지 않은 상태에서 … analyze table emp compute statistics select ename, sal from emp where ename = 'FORD' -------------------------------------------------.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(HASH) [Hint]ACCESS 경로를 변경하는 힌트(HASH) [Hint]ACCESS 경로를 변경하는 힌트(HASH) 인자로 기술한 테이블에 대해 HASH SCAN이 일어나도록 하는 힌트이며 USE_HASH(해시 조인이 일어나도록 하는 힌트)와 구별되며 HASHKEYS parameter를 가지고 만들어진 CLUSTER내에 저장된 테이블에서만 적용 됩니다. [형식] /*+ HASH ( table명 ) */ [예] [먼저 클러스터를 생성] CREATE CLUSTER EMP_DEPT_CLUSTER (deptno NUMBER(2)) PCTUSED 80 PCTFREE 5 TABLESPACE users STORAGE ( INITIAL 250K NEXT 50K MINEXTENTS 1 MAXEXTENTS 3 PCTINCREA.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(FULL) [Hint]ACCESS 경로를 변경하는 힌트(FULL) ACCESS 경로를 변경하는 힌트(FULL) 힌트문(FULL)의 인자로 주어지는 테이블에 대해 FULL SCAN할 것을 지시하는데 FROM절 다음에 테이블명과 Alias를 사용했다면 FULL 힌트에 Alias를 사용해야 하며 FROM절 다음 테이블명 앞에 스키마명이 사용되었다면(scott.emp등) 힌트안의 FULL에서는 스키마명은 생략을 해야 합니다. [잘못된 경우] ? 아래의 경우엔 FULL(e) 라고 해야 하는데 잘못 되었습니다. select /*+ FULL(EMP) */ ename, sal, job from emp e where job = 'CLERK' ? 아래의 경우엔 FULL(EMP) 라고 해야 하는데 잘못 되었습니다. select /*+.. 더보기 oracle - [Hint]ACCESS 경로를 변경하는 힌트(CLUSTER) [Hint]ACCESS 경로를 변경하는 힌트(CLUSTER) [Hint]ACCESS 경로를 변경하는 힌트(CLUSTER) 클러스터 스캔을 이용해 데이터를 추출하도록 하는 힌트 문이며 INDEX CLUSTERED TABLE에서 사용 가능한 문장 입니다. [형식] /*+ CLUSTER (테이블) */ 아래의 예문을 참고 하세요… SELECT /*+ CLUSTER */ employees.last_name, department_id FROM employees, departments WHERE department_id = 10 AND employees.department_id = departments.department_id; 아래 내용을 참고 하세요 ◈ 인덱스 클러스터란(Index Cluster) ? - 클러스.. 더보기 이전 1 ··· 26 27 28 29 30 31 32 ··· 74 다음