Oracle - 인덱스 힌트 사용법
Oracle 인덱스 힌트 사용법 오라클 옵티마이저가 최적의 인덱스를 선택하지 못할 때, 힌트를 사용하여 특정 인덱스 사용을 유도하는 방법을 다룹니다. 인덱스 힌트는 옵티마이저에게 특정 인덱스를 사용하도록 지시하는 강력한 도구입니다. 하지만 남용하면 오히려 성능을 저하시킬 수 있으므로 신중하게 사용해야 합니다. INDEX 힌트 - 특정 인덱스 사용 강제-- 기본 INDEX 힌트 사용SELECT /*+ INDEX(e idx_emp_dept) */ *FROM employees eWHERE department_id = 10;-- 여러 테이블에 각각 인덱스 힌트 적용SELECT /*+ INDEX(e idx_emp_dept) INDEX(d idx_dept_loc) */ e.employee_id, e.last_name, d.department_nameFROM employees e, departments dWHERE e.department_id = d.department_id AND d.location_id = 1700;-- 복합 인덱스 사용 강제SELECT /*+ INDEX(e idx_emp_dept_sal) */ *FROM employees eWHERE department_id = 10 AND salary > 5000; INDEX_DESC 힌트 - 인덱스 역순 스캔-- 인덱스를 역순으로 스캔 (내림차순 정렬 효과)SELECT /*+ INDEX_DESC(e idx_emp_salary) */ *FROM employees eWHERE salary > 5000ORDER BY salary DESC;-- 최근 데이터 조회 시 유용SELECT /*+ INDEX_DESC(o idx_order_date) */ *FROM orders oWHERE order_date >= TRUNC(SYSDATE) - 30ORDER BY order_date DESC; INDEX_FFS 힌트 - Fast Full Index Scan-- 테이블 액세스 없이 인덱스만으로 데이터 조회SELECT /*+ INDEX_FFS(e idx_emp_dept_sal) */ department_id, salaryFROM employees eWHERE department_id IS NOT NULL;-- COUNT 연산에 효과적SELECT /*+ INDEX_FFS(e idx_emp_dept) */ COUNT(*)FROM employees eWHERE department_id > 0;