본문 바로가기

[Oracle] SQL 성능 최적화를 위한 Hint 활용법

by 애덤더미 2024. 11. 15.
반응형

안녕하세요! 오늘은 오라클에서 SQL 성능을 최적화할 수 있는 힌트(Hint) 기능에 대해 소개해드릴까 합니다.

대량 데이터 처리 시 SQL의 실행 계획을 컨트롤해야 할 때 유용하게 사용할 수 있는 기능인데요, 실무에서 꼭 알아두면 좋은 팁입니다.

 

Hint란 ?

힌트는 "SQL 실행 계획에 영향을 주기 위해 사용되는 오라클의 특별한 주석"

일반적으로 SQL 문장을 작성할 때 오라클의 옵티마이저가 최적의 실행 계획을 자동으로 생성하지만, 특정 상황에서는 개발자가 원하는 방향으로 실행 계획을 지정해야 할 때가 있습니다. 이럴 때 힌트를 사용합니다.

자 그럼 실무에서 유용하게 쓰이는 예시를 봐볼까요~

  1. FULL 힌트
    • 특정 테이블에 대해 Full Table Scan을 강제합니다.
      SELECT /*+ FULL(emp) */ * FROM emp;
    • 설명: FULL(emp)는 emp 테이블에 대해 Full Table Scan을 하도록 강제합니다.
  2. INDEX 힌트
    • 특정 인덱스를 사용하도록 지정합니다.
      SELECT /*+ INDEX(emp emp_idx) */ * FROM emp WHERE dept_id = 10;
    • 설명: 옵티마이저가 emp_idx라는 인덱스를 사용하도록 지정합니다
  3. PARALLEL 힌트
    • 병렬 처리를 유도합니다.
      SELECT /*+ PARALLEL(emp, 4) */ * FROM emp;
    • 설명: emp 테이블에 대해 4개의 병렬 프로세스를 사용하여 쿼리를 실행하도록 지정합니다.
  4. NOLOCK 힌트
    • 테이블 잠금을 방지합니다.
      SELECT /*+ NOLOCK */ * FROM emp;

 

주의사항

  • /*+와 */ 사이에 공백이나 형식 오류가 있으면 옵티마이저가 힌트를 무시합니다.
  • SQL의 맨 처음에 위치해야 힌트가 적용되는 경우가 많습니다.
  • Hint는 오라클 전용 기능이므로, 다른 DBMS로 이전할 경우에는 적용되지 않을 수 있습니다.

힌트는 주석 형식으로 SQL 코드에 포함되기 때문에, SQL 실행에 영향을 주되 코드를 읽는 다른 개발자들에게도 의미를 전달할 수 있는 좋은 문서화 도구가 될 수 있습니다.

반응형