오라클 인덱스 힌트 예제
예를 들어 예제 17-3에서는 해당 직원의 이름과 성, 첫 번째 작업 및 해당 부서에서 가장 높은 급여를 가진 각 직원에 대한 해당 직원의 모든 직접 보고서의 총 급여를 반환하기 위해 뷰 v가 만들어집니다. 데이터를 쿼리할 때 e2 보기에서 테이블 e3에 대한 인덱스 emp_job_ix를 강제로 사용하려고 합니다. 예를 들어 예제 17-3에서 job_history 테이블에는 employee_id 열에 단일 열 인덱스와 employee_id 및 start_date 열에 대한 연결된 인덱스가 있습니다. 이러한 인덱스 중 하나를 사용하려면 뷰에 단일 테이블이 포함되어 있거나 단일 테이블이 있는 추가 힌트 뷰를 참조하지 않는 한 참조된 뷰에 대한 액세스 경로 및 조인 힌트는 무시됩니다. 이러한 단일 테이블 뷰의 경우 뷰에 대한 액세스 경로 힌트 또는 조인 힌트가 뷰 내부의 테이블에 적용됩니다. Oracle은 첫 번째 행을 반환하기 전에 명령문에서 액세스한 모든 행을 검색해야 하므로 이러한 명령문은 최상의 응답 시간에 최적화할 수 없습니다. 이러한 명령문중 에서 이 힌트를 지정하면 최적화 프로그램은 쿼리 최적화 방법을 사용하고 최상의 처리량을 최적화합니다. ordered 힌트를 사용하면 Oracle이 FROM 절에 나타나는 순서대로 테이블을 조인합니다. 오라클은 목록 외부의 보기를 고려하지 않습니다. 뷰 목록을 지정하지 않으면 Oracle은 적격한 구체화된 뷰를 검색하고 최종 계획의 비용에 관계없이 항상 사용합니다. 쿼리 블록 구문에 대한 설명은 “힌트에서 쿼리 블록 지정”을 참조하십시오. 테이블 스펙 구문에 대한 설명은 “전역 테이블 힌트 지정”을 참조하십시오.
20장에서는 인덱스를 사용하여 조정을 자세히 살펴보겠지만 인덱스 힌트를 빠르게 검토할 수 있습니다. 인덱스 힌트는 SQL을 튜닝할 때 매우 유용하며, 특히 최적화 프로그램이 잘못된 인덱스(예: 가장 선택적인 인덱스가 아님)를 선택하는 경우 유용합니다. 규칙 기반 최적화 를 사용할 때 가장 자주 발생하지만 인덱스 힌트가 CBO에 적합한 경우도 있습니다. 다음 구문은 Oracle이 문 블록 내에서 지원하는 두 가지 주석 스타일에 포함된 힌트를 보여 주었습니다. 오라클은 테이블 스캔 및 워크로드 기록을 기준으로 테이블을 캐시할지 여부를 결정합니다. 이후 테이블 검색에서 캐시된 블록을 찾을 가능성이 있는 경우에만 테이블을 캐시합니다. Oracle Database 관리자 가이드 직접 경로 삽입에 대한 정보를 입력한 후 각 위치에 대한 인덱스를 생성한 후 Oracle10g은 단일 작업에서 사용 가능한 모든 인덱스를 사용하여 인덱스 결합 작업을 수행했습니다.