[Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기

2022. 3. 27. 00:37·Programming/Oracle
반응형

오라클의 힌트를 사용하는 것과 힌트를 사용하지 않는 것은 생각보다 꽤 큰 차이가 있다. 실제로 병렬처리 힌트 구문을 사용하고 차이를 확실히 느끼다 보니, 힌트구문을 더 알아보고 싶다는 생각을 하게 됐다. 그래서 오늘은 힌트절에 대한 개념과 사용 방법에 대해 알아보고자 한다.

 

1. 오라클 힌트(Oracle hint)란?

힌트는 SQL 튜닝을 하는데에 중요한 핵심 지시구문이다.

오라클은 자체적으로 최적의 실행 방법으로 작동시키는 옵티마이저(Optimizer)가 있는데, 간혹 옵티마이저가 실행하는 것보다, SQL 사용자가 직접 힌트 구문을 줌으로써 최적의 실행 구문을 선언하는 것이 더 나을 때가 있다. 

사용자가 특정 SQL 문장에서 어떤 인덱스의 선택도가 높은지 알고 있다면, Optimizer에 의존한 실행 계획보다 훨씬 효율적으로 실행 계획을 구사할 수 있다. (단, 힌트와 인덱스, 조인의 개념을 정확히 알고 사용하지 않는다면 성능의 저하를 초래할 수 있기 때문에 잘 알고 적절히 사용하는 것이 중요하다.)

 

2. 힌트의 사용 방법

힌트는 기본적으로 /*+ (힌트명)*/의 규칙이 있어서 힌트명 안에 원하는 힌트명을 넣으며 문장의 서두에 넣는다.

-- 예시(병렬처리)
SELECT /*+ PARALLEL */
	A.COL1,
    A.COL2,
    B.COL3
FROM TABLE1 A, TABLE2 B
WHERE A.COL1 = B.COL1

저 힌트명 안에 여러개의 힌트를 섞어서 쓸 수 있다. 여러개의 힌트를 사용할 때에는 힌트 간에 스페이스바(공백)으로 구분해야 한다.

-- 예시
SELECT /*+ PARALLEL FULL(A) */
	A.COL1,
    A.COL2,
    B.COL3
FROM TABLE1 A, TABLE2 B
WHERE A.COL1 = B.COL1

 힌트 안에 괄호에 명시되는 테이블은 테이블의 이름을 쓰는 것이 아니라, ALIAS(별칭)으로 정의되어야 하며, 스키마까지 포함해서 작성하지 않는다. (ex) FULL(TABLE1)(x) FULL(A)(o))

 

 

오늘은 힌트의 개념과 사용 방법에 대해서만 이야기를 했지만, 다음부터는 자주 사용하는 힌트절에 대해 적어보려고 한다.

반응형

'Programming > Oracle' 카테고리의 다른 글

[Oracle] Oracle Exadata의 압축방식 (Exadata Hybrid columnar Compression, EHCC)  (0) 2022.05.21
[Oracle] Oracle Exadata란 무엇인가  (0) 2022.05.14
[Oracle] 오라클 append와 append_values 힌트, 사용방법  (0) 2022.04.23
[Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기  (0) 2022.03.12
[Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기  (0) 2022.02.26
'Programming/Oracle' 카테고리의 다른 글
  • [Oracle] Oracle Exadata란 무엇인가
  • [Oracle] 오라클 append와 append_values 힌트, 사용방법
  • [Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기
  • [Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ML
    nlp
    Google Cloud Platform
    빅데이터분석
    머신러닝
    Github
    노션첫걸음
    pytorch
    자연어처리
    git commit
    dl
    Transformer
    기초
    빅데이터
    gcp
    notion
    Jupyter notebook
    Python
    seq2seq
    LSTM
    데이터베이스
    데이터분석
    파이토치
    GPT
    cnn
    python기초
    파이토치로 시작하는 딥러닝 기초
    git
    노션
    딥러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
[Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기
상단으로

티스토리툴바