2022. 12. 27. 11:15
반응형

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값을 조금 이라도 낮춰서 부하가 적고 최적화된 쿼리로 튜닝할 수 있다.

반응형
Posted by seongsland