Oracle로 쿼리를 실행시키면 Oracle은 자체 옵티마이저로 실행 계획을 세워서 쿼리를 실행한다.
이때 Oracle에서 어떤 실행 계획으로 실행하는지 plan 정보를 확인하거나 실행 계획을 변경하도록 hint를 줄 수 있다.
1. 기본 쿼리
select *
from table1 t1, table2 t2
where t1.a = t2.a and t1.b = 'BB';
2. plan 정보 확인
explain plan for
select *
from table1 t1, table2 t2
where t1.a = t2.a and t1.b = 'BB';
select * from table(dbms_xplan.display); -- xplan 정보 display
3. hint 추가
explain plan for
select /*+ORDERED INDEX(t1 t1_index01) INDEX(t2 t2_index01) */
*
from table1 t1, table2 t2
where t1.a = t2.a and t1.b = 'BB';
select * from table(dbms_xplan.display); -- xplan 정보 display
- ORDERED를 주면 쿼리에서 나온 table 순서대로 검색한다.
- INDEX(테이블 or name space, 인덱스)를 주면 해당 인덱스를 검색한다.
4. 용어 설명
- TABLE ACCESS FULL : 테이블 전체가 검색 되었음.
- Rows(Cardinality) : 검색으로 나온 데이터 row수
- Cost : 실행 비용
* Rows, Cost, Time값을 조금 이라도 낮춰서 부하가 적고 최적화된 쿼리로 튜닝할 수 있다.
'Db > Oracle' 카테고리의 다른 글
Oracle 암/복호화 Package Function Sample (DBMS_CRYPTO) (1) | 2019.11.25 |
---|---|
oracle cursor가 return되는 procedure를 pl/sql 문으로 실행 (0) | 2018.03.07 |
쿼리 내용으로 쿼리실행 (1) | 2013.06.05 |
공휴일을 제외한 두 날짜의 차이 구하기 (2) | 2012.09.12 |
oracle 평일 구하는 함수 (1) | 2012.05.23 |