h1.5. 테이블 Random 액세스 최소화 튜닝
h3.(1) 인덱스 컬럼추가
select /*+ index(emp emp_x01) */
*
from emp
where deptno = 30
and sal >= 2000
select * from emp where deptno = 30 and job >= 'CLERK'
h3.(2) PK 인덱스에 컬럼 추가
a1ter table dept drop primary key;
create index dept_x01 on dept(deptno, 1oc);
alter table dept add
constraint dept_pk praimary key(deptno) using index dept_x01;
인덱스 추가전
select /*+ ordered use_nl(d) */ *
from emp e, dept d
where d.deptno=e.deptno and d.loc='NEW YORK
Rows Row Source Operation
------- ---------------------------------------------------
3 NESTED LOOPS (cr=25 pr=0 pw=0 time=422 us)
14 TABLE ACCESS FULL EMP (cr=8 pr=0 pw=0 time=139 us)
3 TABLE ACCESS BY INDEX ROWID DEPT (cr=17 pr=0 pw=0 time=568 us)
14 INDEX UNIQUE SCAN DEPT_PK (cr=3 pr=0 pw=0 time=258 us)
DEPT.LOC 를 인덱스 추가 후
select /*+ ordered use_nl(d) */ *
from emp e, dept d
where d.deptno=e.deptno and d.loc='NEW YORK
Rows Row Source Operation
------- ---------------------------------------------------
3 TABLE ACCESS BY INDEX roWID DEPT (cr=14 pr=O pw=O time=302 us)
18 NESTED LOOPS (cr=12 pr=O pw=O t time=1483 us)
14 TABLE ACCESS FULL EMP (cr=8 pr=o pw=O time=145 us)
3 INDEX RANGE SCAN DEPT_X01 (cr=4 pr=O pw=O time=220 us)
그냥 INDEX 만드는거랑 무슨 차이일지?
h3.(3) 컬럼 추가에 따른 클러스터링 팩터 변화
클러스터링 팩터 조회
select clustering_factor from user_indexes where index_name='인덱스명';
h3.(4) 인텍스만 읽고 처리
h3.(5) 버퍼 Pinning 효과 활용
*오라클의 경우, 한번 입력된 테이블 레코드는 절대 rowid가 바뀌지 않는다.
select * from emp where rowid = : rid
h3.(6) 수동으로 클러스터링 팩터 높이기
Reorg
대상 Table의 Data를 Physical하게 재편성하여 DML 작업으로 인한 Fragmentation을 제거하는 작업 입니다.