반응형
오라클 성능 고도화 원리와 해법
p.324
- 인덱스 구성전략만으로 튜닝이 되지 않을 때는 옵티마이저 힌트를 사용해야 하는데, 조건절이 동적으로 바뀐다면
힌트를 함부로 사용할 수 없다. 그때는 할 수 없이 Static SQL을 사용해야 하며, 인덱스 구성과 컬럼 분포, 자주 사용되는 액세스 유형들을 고려해 SQL을 통합하고 힌트를 기술할 수 있는 형태로 재작성해야만 한다.
- 원칙은 Static SQL로 작성하는 것이며, 방법이 없거나 SQL이 너무 복잡할 때만 Dynamic SQL을 꺼내 들려고 노력해야 한다.
p.325
(4)선택적 검색 조건에 사용할 수 있는 기법 성능 비교
A. OR 조건을 사용하는 경우
B. LIKE 연산자를 사용하는 경우
C. NVL 함수를 사용하는 경우
D. DECODE 함수를 사용하는 경우
E. UNION ALL을 사용하는 경우
*p.325 요약
1) not null 컬럼일 때는 nvl, decode를 사용하는 것이 편하다.
2) null 값을 허용하고 인덱스 액세스 조건으로 의미있는 컬럼이라면 union all을 사용해 명시적으로 분기해야 한다.
3) 인덱스 액세스 조건으로 참여하지 않는 경우. 즉 인덱스 필터 또는 테이블 필터 조건으로만 사용되는 컬럼이라면 (c: is null or col = :c) 또는 (c like :c || '%') 어떤 방식을 사용해도 무방하다.
반응형
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
ORA-16038, ORA-19809, ORA-00312 (0) | 2012.03.20 |
---|---|
AUTOTRACE(이펙티브 오라클에서 발취, 정보문화사, TOMAS KTYE저) (0) | 2012.02.13 |
ORA-27100 Shared Memory Realm Already Exist (0) | 2011.11.16 |
DBLS, Effective Oracle (0) | 2011.11.16 |
Oracle Day in Seoul, 삼성동 인터컨티넨탈 호텔 - 2011년 11월 16일(수) (0) | 2011.11.16 |