오라클 인덱스 힌트 예제

병렬 실행 힌트에 대한 자세한 내용은 Oracle 데이터 웨어하우징 가이드는 CBO 지침입니다. Oracle에서 힌트를 사용할 수 있는 경우 힌트 지시문이 포함된 설명 계획만 생성됩니다. 이 문서에서는 인덱스 힌트를 검사합니다. 이러한 힌트를 사용하는 방법을 알면 성능 조정을 개선하는 데 도움이 될 수 있습니다. FIRST_ROWS(n) 힌트는 오라클이 첫 번째 n 행을 가장 효율적으로 반환하는 계획을 선택하여 빠른 응답을 위해 개별 SQL 문을 최적화하도록 지시합니다. 인덱스를 지정하는 힌트는 다음과 같이 간단한 인덱스 이름 또는 괄호로 만든 열 목록을 사용할 수 있습니다. 힌트는 표시되는 명령문 블록의 최적화에만 적용됩니다. 문 블록은 다음 문 또는 명령문의 일부 중 하나입니다: Oracle은 다음 명령문 에서 조건에서 사용할 수 있는 last_name 열에 인덱스가 있더라도 직원 테이블에서 전체 테이블 검사를 수행하여 이 문을 실행합니다. 절. REWRITE 힌트는 최적화 프로그램이 비용 고려 없이 가능하면 구체화된 뷰의 관점에서 쿼리를 다시 작성하도록 합니다. 보기 목록의 유무에 관계없이 다시 쓰기 힌트를 사용합니다.

뷰 목록과 함께 REWRITE를 사용하고 목록에 적격한 구체화된 뷰가 포함된 경우 Oracle은 비용에 관계없이 해당 보기를 사용합니다. 직접 경로 삽입에 대한 오라클 데이터베이스 관리자 가이드 NO_MERGE 힌트는 오라클이 병합 가능한 뷰를 병합하지 않도록 합니다. USE_NL 및 USE_MERGE 힌트를 조인 순서 힌트와 함께 사용하는 것이 좋습니다. “조인 주문에 대한 힌트”를 참조하십시오. 오라클은 참조된 테이블이 조인의 내부 테이블이 되어야 할 때 이러한 힌트를 사용합니다. 참조된 테이블이 외부 테이블인 경우 힌트는 무시됩니다. UNNEST 힌트는 오라클에게 하위 쿼리 블록에 유효성만 확인하도록 지시합니다. 하위 쿼리 블록이 유효한 경우 추론 또는 비용을 확인하지 않고 하위 쿼리 해제가 활성화됩니다. 예를 들어 예제 17-3에서는 해당 직원의 이름과 성, 첫 번째 작업 및 해당 부서에서 가장 높은 급여를 가진 각 직원에 대한 해당 직원의 모든 직접 보고서의 총 급여를 반환하기 위해 뷰 v가 만들어집니다. 데이터를 쿼리할 때 e2 보기에서 테이블 e3에 대한 인덱스 emp_job_ix를 강제로 사용하려고 합니다. 힌트를 사용하면 일반적으로 최적화 프로그램이 결정을 내릴 수 있습니다.

응용 프로그램 디자이너는 최적화 프로그램이 모르는 데이터에 대한 정보를 알 수 있습니다. 힌트는 최적화 프로그램이 특정 기준에 따라 특정 쿼리 실행 계획을 선택하도록 지시하는 메커니즘을 제공합니다. 테이블을 지정하는 힌트는 일반적으로 명령문에서 참조하는 뷰 내부의 테이블이 아니라 힌트가 발생하는 DELETE, SELECT 또는 UPDATE 쿼리 블록의 테이블을 참조합니다. 뷰 내부에 표시되는 테이블에 대한 힌트를 지정하려는 경우 Oracle은 뷰에 힌트를 포함하는 대신 전역 힌트를 사용하는 것이 좋습니다. 이 장에서 설명하는 테이블 힌트는 테이블 이름이 포함된 뷰 이름을 포함하는 확장된 테이블 스펙 구문을 사용하여 전역 힌트로 변환할 수 있습니다. 경고: Oracle8i에서 최적화 프로그램이 쿼리를 변환하거나 다시 작성했을 수 있습니다. 이로 인해 최적화 프로그램이 인덱스를 사용할 수 없는 액세스 경로를 선택할 수 있으며 이로 인해 인덱스 힌트가 무시될 수 있습니다. index_join 힌트 힌트를 잘못 지정하면 Oracle은 힌트를 무시하지만 오류를 반환하지 않습니다. 예: 쿼리 블록 구문에 대한 설명은 “힌트에서 쿼리 블록 지정”을 참조하십시오. 테이블 스펙 구문에 대한 설명은 “전역 테이블 힌트 지정”을 참조하십시오. 오라클 데이터베이스 팁 2015년 7월 28일 오라클 데이터베이스 SQL 참조 의견에 대한 자세한 내용은 최신 오라클 데이터베이스와 함께 자주 필요하지 않습니다.

힌트를 전혀 사용하지 않고 Oracle10+에서 코드를 테스트해야 합니다. 쿼리 블록 구문에 대한 설명은 “힌트에서 쿼리 블록 지정”을 참조하십시오.