일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- d3js
- Python
- react
- post
- loguru
- Test
- Logging
- springboot
- 오라클
- npm
- NextJS
- JUnit
- fastapi
- svelte
- Spring
- Java
- ubuntu
- vuex
- Shell
- EUREKA
- nodejs
- sveltekit
- Vue3
- NextJS13
- InteliJ
- style
- vitejs
- fetch
- gradle
- Vue
- Today
- Total
양군의 행복한 이야기
오라클 hint 본문
* RULE : RULE BASE 옵티마이져 사용
* FIRST_ROWS : 첫째 레코드의 추출시간을 최소화 할 목적으로 최적화
* ALL_ROWS : 모든 레코드를 모두 처리하는 시간의 최소화는 목적으로 최적화
* FULL : 지정된 테이블에 대한 전체 스캔
* ROWID : 지정된 테이블에 대한 ROWID에 의한 테이블 스캔
* CUSTER : 지정된 테이블에 대한 클러스터 스캔
* HASH : 지정된 테이블에 대한 해쉬 스캔
* INDEX : 특정한 인덱스를 사용함을 알림
SELECT /*+ INDEX(order item_index_name) */ *
FROM order
WHERE item > '';
* INDEX_ASC : 내림차순(순차적)으로 INDEX를 스캔
* INDEX_DESC : 오름차순(역순)으로 INDEX를 스캔
SELECT /*+ INDEX_DESC(A WORK_INDEX) */ WORK_CODE, WORK_NAME
FROM JOB A
WHERE WORK = 'SALES';
* AND_EQUALS : 어려개의 IDNEX들을 MERGE하여 사용(2~5개)
* ORDERED : FROM절에 기술된 TABLE순으로 JOIN
SELECT /*+ ORDERED */ *
FROM table_1 a, table_2 b
WHERE a.column_1 = b.column_1
AND a.column_2 between 'a' and 'c'
AND b.column_1 = 'a';
정상적인 경우 옵티마이져는 "="로 비교 되고 있는 table_2를 먼저 access 한다.
이때 table_2의 분포도가 table_1의 분포도 보다 좋지 못할때는 조회에 따른 비요을
많이 소비하게된다.
ORDERED hint를 사용해서 테이블 기술 순서데로 access하도록 수정한다.
* USE_NL : 먼저 특정 TABLE의 ROW를 액세스하고 그 값에 해당하는 다른 TABLE의 ROW를
찾는 작업을 해당법위까지 실행하는 조인
* USE_MERGE : 먼저 각각의 TABLE의 처리범위를 스캔하여 SORT한 후 서로 MERGE하면서
JOIN하는 방식
* PARALLEL : 병렬처리 프로세서의 개수를 지정
* CACHE : 테이블의 로우들을 메모리내에 상주
* NOCHACHE : 메모리내에 상주(Cache)시킨 옵션의 해제
* MERGE-AJ : 부정형의 조인(Anti-Join)을 소트머지 방식으로 수행
* HASH-AJ : 부정형의 조인을 해쉬조인(Hash Join)방식으로 수행