어흥
[Oracle] Plan 본문
1. Plan이란?
- CBO(Cost Based Optimizer: 최소의 비용으로 최대 효과를 추구) 방식에서 Optimizer가 사용자에게 추천해주는 최적화된 계획(Plan)
- 대체적으로 괜찮은 Plan을 제공하지만, Plan은 완벽하지 않아서 항상 의심을 해야한다
2. Plan 결과화면 정리
1) Select문을 통해 원하는 쿼리 수행
2) 결과화면 확인
Cost = 440K: 440,000 비용발생
Card(Cardinality) = 13M: 13,000,000건의 접근하는 레코드 수
Bytes = 1G: 1,000,000,000(Card * 1Row의 총 길이)
결과화면에 'Access (Full)'이 출력되었다면 -> 전체 접근으로 지양해야 하는 쿼리문
위의 결과화면이 뜨는 이유
- 해당 쿼리에 대한 적절한 Index가 존재하지 않는다 -> Index 생성을 통해 해결 가능
- Index가 존재하지만, 부정확한 정보로 인해 Index를 사용하지 않는 경우 -> 힌트절을 사용해 해결 가능
- Index을 통한 접근보다 빠르거나 차이가 없는 경우 -> 데이터가 별로 없을 때 사용
3. Plan 읽는 방법
- Sibling 사이에선 먼저 나온것을 먼저 처리
- Child가 있는 경우, Child -> Parent순으로 처리
1 UNION ALL
2 TABLE ACCESS ~
3 INDEX (UNIQUE SCAN) ~
4 TABLE ACCESS ~
5 INDEX (UNIQUE SCAN) ~
위의 예시의 경우
- UNION ALL의 Child가 존재하므로 2~5줄이 먼저 수행 (2~5 -> 1)
- Table access 2개가 Sibling이므로 먼저 나온것 부터 수행 (2->3->4->5->1)
즉, 실행 순서: 2 -> 3 -> 4 -> 5 -> 1
'Oracle' 카테고리의 다른 글
[Oracle] MERGE INTO (0) | 2020.08.04 |
---|---|
[Oracle] Sequence (0) | 2020.07.22 |
[Oracle] Index (0) | 2020.07.09 |
[Oracle] SQL (DDL, DML) (1) | 2020.07.07 |