μ΅ν°λ§μ΄μ ννΈμ λν΄μ
νμ¬μμ κ°λ°μ μ§ννλ©΄μ μ΅ν°λ§μ΄μ κ° μ΅μ μ΄λΌκ³ μκ°νλ μ€ν κ³νκ³Ό μ€μ μ΅μ μ μ€ν κ³νμ μ’ μ’ μ°¨μ΄κ° μλ€λ κ²μ μκ² λμλ€.
μ΄λ, λ΄κ° μ§ννλ κ°μ λ°©ν₯μ
- ν΄λΉ ν μ΄λΈμ λν΄ μ΄λ―Έ μ‘΄μ¬νλ λ€λ₯Έ μΈλ±μ€λ‘ λ³κ²½νμ¬ κ°μ κ°λ₯νκ°?
- μΈλ±μ€λ₯Ό μμ νκ±°λ μλ‘ μΆκ°νμ¬ κ°μ κ°λ₯νκ°?
1λ²μΌλ‘ ν΄κ²° κ°λ₯ν λΆλΆμ SQLμ μ‘μΈμ€ λ°©μμ΄λ μ‘°μΈ μμ, μ‘°μΈ λ°©μ λν Hintλ₯Ό μΆκ°νμ¬ κ°μ μ μ§ννκ³ ,
1λ²μΌλ‘ ν΄κ²°μ΄ λΆκ°λ₯ν κ²½μ° μ¦, 2λ²μ κ²½μ°μλ μΈλ±μ€μ μμλ₯Ό λ³κ²½νκ±°λ κ΅¬μ± μ»¬λΌμ λ³κ²½νλ μμ
μ μ§ννλ€.
ν΄λΉ κΈμμλ 1λ²μ μΌμ΄μ€μ μ μ©ν μ΅ν°λ§μ΄μ ννΈμ λν΄μ κ°λ¨νκ² μ 리νκ³ μ νλ€.
μ΅ν°λ§μ΄μ Hint
μ€λΈμ νΈ ν΅κ³μ μμ€ν ν΅κ³ μ 보λ₯Ό λ°νμΌλ‘ μ΅μ μ νλ‘μμ λ₯Ό λ§λλ μ΅ν°λ§μ΄μ λ λλλ‘ λ³΅μ‘ν κ²½μ°μλ νκ³κ° λ°μνλ€.
μ΄λ¬ν κ²½μ°μ μ§μ SQLμ ν¨μ¨μ μΈ κ²½λ‘μ λν Hintλ₯Ό λΆμ¬ν¨μΌλ‘μ¨ κ°μ ν μ μλ€.
μλλ A ν μ΄λΈμ λν΄μ IDX_01λΌλ μΈλ±μ€λ‘ μ‘μΈμ€νλλ‘ μ€μ νλ ννΈλ₯Ό μ μ©ν μμμ΄λ€.
SELECT /*+ INDEX(A, IDX_01) */
x, y, z
FROM A
WHERE A.id = '000001'
Hint μ¬μ© μ£Όμμ¬ν

ννΈλ₯Ό μ¬μ©ν λλ μ£Όμν μ¬νμ΄ μλ€.
첫째λ‘, ννΈμ ννΈ μ¬μ΄μλ μ½€λ§(,)λ₯Ό μ¬μ©νλ©΄ μ λλ€.
λΆμ μ ν μΌμ΄μ€
/* INDEX(A), FULL(B) */
μ μ ν μΌμ΄μ€
/* INDEX(A) FULL(B) */
λμ§Έλ‘, ν μ΄λΈμ μ§μ ν λ, μ€ν€λ§λͺ κΉμ§ λͺ μνλ©΄ μ λλ€.
λΆμ μ ν κ²½μ°
SELECT /*+ FULL(KHS.A) */
μ μ ν κ²½μ°
SELECT /*+ FULL(A) */
μ μ§Έλ‘, FROM μ ν μ΄λΈλͺ μ Aliasλ₯Ό μ§μ νλ€λ©΄, ννΈμλ Aliasλ₯Ό μ¬μ©ν΄μΌ νλ€.
λΆμ μ ν κ²½μ°
SELECT /*+ FULL(TAB1) */
FROM TAB1 A
μ μ ν κ²½μ°
SELECT /*+ FULL(A) */
FROM TAB1 A
μ΅ν°λ§μ΄μ λ°μμ¨
ννΈλ₯Ό μ μ©ν κ²½μ°, νΉμ ν μ΄λΈμ λν΄ μ‘μΈμ€ λ°©μλ§ ννΈλ₯Ό μ£Όκ³ λλ¨Έμ§λ μ΅ν°λ§μ΄μ μκ² λ§‘κΈ°λ κ²λ κ°λ₯νλ€.
μλμ SQLμ κ²½μ° a ν
μ΄λΈμ μ‘μΈμ€ν λ IDX_dtλΌλ μΈλ±μ€μ μ κ·Όνλλ‘λ§ ννΈλ₯Ό λͺ
μνκ³ ,
μ‘°μΈ λ°©μκ³Ό μμ κ·Έλ¦¬κ³ B ν
μ΄λΈμ λν μ‘μΈμ€ λ°©μμ μ΅ν°λ§μ΄μ κ° νλ¨νλλ‘ λ§‘κ²Όλ€.
SELECT /*+ INDEX(a, IDX_dt) */
x, y, z
FROM A a, B b
WHERE a.dt =: dt
AND a.id = b.id
μ΄λ²μλ SQLμ μ΅ν°λ§μ΄μ κ° λ€λ₯Έ λ°©μμ μ ννμ§ λͺ»νλλ‘ ννΈλ₯Ό λΉνμμ΄ κ³ μ ν μΌμ΄μ€μ΄λ€.
SELECT /*+ LEADING(A) USE_NL(B) INDEX(a, IDX_dt) INDEX(b, IDX_id) */
x, y, z
FROM A a, B b
WHERE a.dt =: dt
AND a.id = b.id
ν΅κ³ μ 보λ μ€ν νκ²½μ λ³νλ‘ μΈν΄μ μ΅ν°λ§μ΄μ κ° μ΅μ μ κ²½λ‘λ₯Ό μ°Ύμ§ λͺ»ν κ²½μ°λ₯Ό λλΉνμ¬ μ΄λ―Έ ννΈ μ μ©μ μμνλ€λ©΄ λΉνμμ΄ μ€μ νλ κ²μ΄ μ’μ λ°©ν₯μ΄λΌκ³ μκ°νλ€.
μ¬κΈ°μ λͺ¨λ κΈ°μ νμ§λ μμ κ²μ΄μ§λ§ λ€λ₯Έ ννΈ μ’ λ₯λ₯Ό μΈκΈλ§ νκ³ λ§λ¬΄λ¦¬νκ³ μ νλ€.
- μ‘μΈμ€ λ°©μ : FULL, INDEX, INDEX_DESC ...
- μ‘°μΈ μμ : ORDERD, LEADING...
- μ‘°μΈ λ°©μ : USE_NL, USE_MERGER, USE_HASH, NL_SG, MERGER_SJ, HASH_SJ
λ€λ₯Έ 쿼리 λ³ν, λ³λ ¬ μ²λ¦¬ λ±λ±μ μν ννΈλ μ‘΄μ¬νμ§λ§ νμ¬λ‘μλ μ‘μΈμ€ λ°©μ, μ‘°μΈ μμ, μ‘°μΈ λ°©μμλ§ μ§μ€νκ³ μ νλ€.