Oracle Hint, Tuning
Hints For Access Paths
(Cluster)
Oracle Hint, Tuning_Hints For Access Paths
6.2 Hints for Access Paths (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;
Oracle Hint, Tuning_Hints For Access Paths
인덱스 클러스터란(Index Cluster) ?
• 클러스터 내의 데이터를 유지하기 위해 클러스터 인덱스라는 인덱스 사용
• 클러스터 인덱스는 주어진 키 값을 가진 행을 포함하고 있는 블록을 가리키는데 사용된다.
• 클러스터 인덱스의 구조는 보통 인덱스의 구조와 비슷하다. (보통 인덱스는 NULL 키 값을
저장하지 않지만 클러스터 인덱스는 NULL 키를 저장)
• 클러스터로부터 행을 저장하고 읽어 들이기 위해 오라클 서버는 주어진 키 값을 갖는 첫
행을 가리키는 클러스터 인덱스를 사용
Cluster Index 와 Table Index의 차이점
• 클러스터 Index는 클러스터 행당 하나의 입력 항목이 아닌 클러스터 키 값당 하나의
입력 항목을 포함.
• 테이블 인덱스는 없어도 사용자에게 영향을 주지 않지만 Cluster Index는 없으면 클러스터화
된 데이터에 액세스 불가능하다.
Oracle Hint, Tuning_Hints For Access Paths
SQL> drop table mydept3;
SQL> drop table myemp3;
SQL> drop cluster myemp3_mydept3;
SQL> create cluster myemp3_mydept3 (deptno varchar2(1));
SQL> create index idx_myemp3_mydept3 on cluster myemp3_mydept3;
SQL> create table mydept3 (
deptno varchar2(1),
dname varchar2(100)
) cluster myemp3_mydept3(deptno);
SQL> create table myemp3 cluster myemp3_mydept3(deptno)
as
select empno, deptno from myemp1 where rownum < 5000000;
SQL> insert into mydept3
select deptno, dname from mydept1;
SQL> commit;
SQL> set autotrace on explain
SQL> set timing on
SQL> select count(e.empno)
from mydept3 d,
myemp3 e
where e.deptno = d.deptno ;
Oracle Hint, Tuning_Hints For Access Paths
COUNT(E.EMPNO)
--------------
4999999
경 과: 00:00:00.82
Execution Plan
----------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 17 | 2464 (1)|
| 1 | SORT AGGREGATE | | 1 | 17 | |
| 2 | NESTED LOOPS | | 1 | 17 | 2464 (1)|
| 3 | TABLE ACCESS FULL | MYDEPT3 | 1 | 2 | 2463 (1)|
|* 4 | TABLE ACCESS CLUSTER| MYEMP3 | 1604K| 22M| 1
SQL> select /*+ CLUSTER(e) */
count(e.empno)
from mydept3 d,
myemp3 e
where e.deptno = d.deptno ;
경 과: 00:00:00.72
Oracle Hint, Tuning_Hints For Access Paths
Execution Plan
----------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 17 | 2464 (1)|
| 1 | SORT AGGREGATE | | 1 | 17 | |
| 2 | NESTED LOOPS | | 1 | 17 | 2464 (1)|
| 3 | TABLE ACCESS FULL | MYDEPT3 | 1 | 2 | 2463 (1)|
|* 4 | TABLE ACCESS CLUSTER| MYEMP3 | 1604K| 22M| 1
SQL> select /*+ RULE */
COUNT(e.empno)
from mydept3 d,
myemp3 e
where e.deptno = d.deptno ;
데이터 나오는 데 한참 걸린다!!
Execution Plan
-----------------------------------------
| Id | Operation | Name |
------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | SORT AGGREGATE | |
| 2 | NESTED LOOPS | |
| 3 | TABLE ACCESS FULL | MYEMP3 |
|* 4 | TABLE ACCESS CLUSTER| MYDEPT3 |
------------------------------------------

6.2 hints for access paths(cluster)

  • 1.
    Oracle Hint, Tuning HintsFor Access Paths (Cluster)
  • 2.
    Oracle Hint, Tuning_HintsFor Access Paths 6.2 Hints for Access Paths (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;
  • 3.
    Oracle Hint, Tuning_HintsFor Access Paths 인덱스 클러스터란(Index Cluster) ? • 클러스터 내의 데이터를 유지하기 위해 클러스터 인덱스라는 인덱스 사용 • 클러스터 인덱스는 주어진 키 값을 가진 행을 포함하고 있는 블록을 가리키는데 사용된다. • 클러스터 인덱스의 구조는 보통 인덱스의 구조와 비슷하다. (보통 인덱스는 NULL 키 값을 저장하지 않지만 클러스터 인덱스는 NULL 키를 저장) • 클러스터로부터 행을 저장하고 읽어 들이기 위해 오라클 서버는 주어진 키 값을 갖는 첫 행을 가리키는 클러스터 인덱스를 사용 Cluster Index 와 Table Index의 차이점 • 클러스터 Index는 클러스터 행당 하나의 입력 항목이 아닌 클러스터 키 값당 하나의 입력 항목을 포함. • 테이블 인덱스는 없어도 사용자에게 영향을 주지 않지만 Cluster Index는 없으면 클러스터화 된 데이터에 액세스 불가능하다.
  • 4.
    Oracle Hint, Tuning_HintsFor Access Paths SQL> drop table mydept3; SQL> drop table myemp3; SQL> drop cluster myemp3_mydept3; SQL> create cluster myemp3_mydept3 (deptno varchar2(1)); SQL> create index idx_myemp3_mydept3 on cluster myemp3_mydept3; SQL> create table mydept3 ( deptno varchar2(1), dname varchar2(100) ) cluster myemp3_mydept3(deptno); SQL> create table myemp3 cluster myemp3_mydept3(deptno) as select empno, deptno from myemp1 where rownum < 5000000; SQL> insert into mydept3 select deptno, dname from mydept1; SQL> commit; SQL> set autotrace on explain SQL> set timing on SQL> select count(e.empno) from mydept3 d, myemp3 e where e.deptno = d.deptno ;
  • 5.
    Oracle Hint, Tuning_HintsFor Access Paths COUNT(E.EMPNO) -------------- 4999999 경 과: 00:00:00.82 Execution Plan ---------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ----------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 17 | 2464 (1)| | 1 | SORT AGGREGATE | | 1 | 17 | | | 2 | NESTED LOOPS | | 1 | 17 | 2464 (1)| | 3 | TABLE ACCESS FULL | MYDEPT3 | 1 | 2 | 2463 (1)| |* 4 | TABLE ACCESS CLUSTER| MYEMP3 | 1604K| 22M| 1 SQL> select /*+ CLUSTER(e) */ count(e.empno) from mydept3 d, myemp3 e where e.deptno = d.deptno ; 경 과: 00:00:00.72
  • 6.
    Oracle Hint, Tuning_HintsFor Access Paths Execution Plan ---------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ----------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 17 | 2464 (1)| | 1 | SORT AGGREGATE | | 1 | 17 | | | 2 | NESTED LOOPS | | 1 | 17 | 2464 (1)| | 3 | TABLE ACCESS FULL | MYDEPT3 | 1 | 2 | 2463 (1)| |* 4 | TABLE ACCESS CLUSTER| MYEMP3 | 1604K| 22M| 1 SQL> select /*+ RULE */ COUNT(e.empno) from mydept3 d, myemp3 e where e.deptno = d.deptno ; 데이터 나오는 데 한참 걸린다!! Execution Plan ----------------------------------------- | Id | Operation | Name | ------------------------------------------ | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | NESTED LOOPS | | | 3 | TABLE ACCESS FULL | MYEMP3 | |* 4 | TABLE ACCESS CLUSTER| MYDEPT3 | ------------------------------------------