MSSQL OPTION(RECOMPILE)
π SQL Server OPTION(RECOMPILE)
β
OPTION(RECOMPILE)μ 쿼리 μ€ν μλ§λ€ μλ‘μ΄ μ€ν κ³νμ μμ±νλ μ΅μ
β
맀κ°λ³μ κ°μ΄ μμ£Ό λ³νκ±°λ, λμ SQLμ μ¬μ©ν λ μ΅μ μ μ€ν κ³νμ μ μ§νκΈ° μν΄ μ¬μ©
β SQL Serverκ° λ§€λ² μ΅μ μ ν μ΄λΈ ν΅κ³ λλ μ‘°μΈ μ‘°κ±΄κ³Ό κ°μ νκ²½ λ³κ²½ μ¬νμ κ³ λ €νμ¬ μ΅μ μ μ€ν κ³νμ μμ±
β μΈμ μ¬μ©ν΄μΌ ν κΉ?
βοΈ λ§€κ°λ³μ κ°μ΄ μμ£Ό λ³κ²½λ λ → νΉμ κ°μ μ΅μ νλμ§ μλλ‘ λ°©μ§
βοΈ WHERE μ μ΄λ JOIN μ‘°κ±΄μ΄ λμ μΌλ‘ λ°λ λ → μ€ν κ³νμ μ΅μ μνλ‘ μ μ§
βοΈ μΏΌλ¦¬ μ€ν μ±λ₯μ΄ μΌμ νμ§ μμ λ → μ΅μ νλ μ€ν κ³νμ μ μ©
β μ¬μ© μμ
SELECT * FROM Orders
WHERE OrderDate >= @StartDate
OPTION(RECOMPILE);
π λ§€λ² μ΅μ μ μ€ν κ³νμ μμ±νμ¬ μ±λ₯ μ μ§
β μ£Όμν μ
β οΈ μΏΌλ¦¬ μ€ν μλ§λ€ μ€ν κ³νμ μλ‘ λ§λ€κΈ° λλ¬Έμ, μ±λ₯ μ ν κ°λ₯μ± μμ
(μ±λ₯ μ΅μ νμ λμμ μ£Όμ§λ§ 쿼리 μ€ν μλλ₯Ό λ릴 μ μμΌλ―λ‘ νμν κ²½μ°μλ§ μ¬μ©)
β οΈ μ μ μΈ μΏΌλ¦¬(μμ£Ό λ³νμ§ μλ 맀κ°λ³μ)μλ λΆνμ
π μ¦, λμ 쿼리λ μ€ν κ³ν μ΅μ νκ° νμν κ²½μ°μλ§ μ¬μ©νλ κ²μ΄ ν¨κ³Όμ
β 1. OPTION(RECOMPILE)μ΄λ?
OPTION(RECOMPILE)μ SQL Serverμμ 쿼리λ₯Ό μ€νν λλ§λ€ μ€ν κ³νμ μ¬μ»΄νμΌνλλ‘ μ§μνλ μ΅μ
μ
λλ€.
μ¦, λ§€λ² μ΅μ μ ν
μ΄λΈ ν΅κ³ λ° μ‘°κ±΄μ λ°μνμ¬ μ΅μ μ μ€ν κ³νμ μμ±νλ μν μ ν©λλ€.
β 2. OPTION(RECOMPILE)μ μ¬μ©ν΄μΌ νλ κ²½μ°
λ§€κ° λ³μ κ°μ΄ μμ£Ό λ³κ²½λλ κ²½μ° | μ€ν κ³νμ΄ νΉμ λ§€κ° λ³μμ μ΅μ νλμ§ μλλ‘ λ°©μ§ |
λμ SQLμμ WHERE μ μ΄λ μ‘°μΈ μ‘°κ±΄μ΄ λ³νλ κ²½μ° | μ‘°κ±΄μ΄ λ³ν λλ§λ€ μ΅μ μ μ€ν κ³νμ μλ‘ μμ± |
볡μ‘ν 쿼리μμ νΉμ μν©λ³ μ΅μ μ μ€ν κ³νμ΄ νμν κ²½μ° | 쿼리 쑰건μ λ°λΌ μ΅μ μ μ€ν κ³νμ λ€λ₯΄κ² μ μ© |
π μ¦, OPTION(RECOMPILE)μ μ€ν κ³νμ κ³ μ μν€μ§ μκ³ , λ§€λ² μ΅μ μ μνλ‘ μ€ννκΈ° μν΄ μ¬μ©
β 3. OPTION(RECOMPILE) μμ
π λ§€κ° λ³μ κ°μ΄ λ¬λΌμ§ λλ§λ€ μ΅μ μ μ€ν κ³νμ μμ±νλ μμ
SELECT * FROM Orders
WHERE OrderDate >= @StartDate
OPTION(RECOMPILE);
β μ΄ κ²½μ° @StartDate κ°μ΄ λ³κ²½λ λλ§λ€ μλ‘μ΄ μ€ν κ³νμ μμ±νμ¬ μ΅μ ν!
β 4. OPTION(RECOMPILEμ μ¬μ©ν λ μ£Όμν μ
βοΈ μΏΌλ¦¬λ₯Ό μ€νν λλ§λ€ μ€ν κ³νμ μ¬μ»΄νμΌνλ―λ‘ μ±λ₯μ μν₯μ μ€ μ μμ
βοΈ μ μ μΈ μΏΌλ¦¬(쿼리 ν
μ€νΈκ° κ³ μ λκ³ λ§€κ° λ³μ κ°μ΄ κ±°μ λ³νμ§ μλ κ²½μ°)μλ λΆνμ
βοΈ λ°λμ μ€ν κ³νμ λμ μΌλ‘ μ‘°μ ν΄μΌ ν νμκ° μλ κ²½μ°μλ§ μ¬μ©ν΄μΌ ν¨
β 5. OPTION(RECOMPILE)μ μ¬μ©νλ©΄ μ λλ κ²½μ°
μ μ μΈ μΏΌλ¦¬ | λμΌν μ€ν κ³νμ λ°λ³΅μ μΌλ‘ μ¬μ©ν μ μμ |
μμ£Ό μ€νλλ 쿼리 | λ§€λ² μ€ν κ³νμ μλ‘ μμ±νλ©΄ μ€νλ € μ±λ₯ μ ν κ°λ₯ |
λ§€κ° λ³μ κ°μ΄ κ±°μ λ³νμ§ μλ κ²½μ° | κΈ°μ‘΄ μ€ν κ³νμ μ¬μ¬μ©νλ κ²μ΄ ν¨μ¨μ |
β 6. κ²°λ‘ : μΈμ OPTION(RECOMPILE)μ μ¬μ©ν΄μΌ ν κΉ?
βοΈ λ§€κ° λ³μ κ°μ΄ μμ£Ό λ³νκ³ , μ΅μ μ μ€ν κ³νμ΄ λ§€λ² λ¬λΌμ ΈμΌ νλ κ²½μ°
βοΈ λμ SQLμ μ¬μ©νλ©° WHERE μ μ΄λ μ‘°μΈ μ‘°κ±΄μ΄ λ³κ²½λ κ°λ₯μ±μ΄ λμ κ²½μ°
βοΈ νΉμ 쑰건μμ μ΅μ νκ° νμν κ²½μ° (λ¨, νμνμ§ μλ€λ©΄ μ¬μ©μ μ§μν΄μΌ ν¨)
π μ¦, μ€ν κ³νμ΄ κ³ μ λλ©΄ μ±λ₯μ΄ μ νλ κ°λ₯μ±μ΄ μλ κ²½μ°μ OPTION(RECOMPILE)μ νμ©νλ©΄ μ’λ€! π